這篇文章將為大家詳細講解有關(guān)使用javacv怎么實現(xiàn)視頻抽幀,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
成都創(chuàng)新互聯(lián)公司長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為千陽企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站建設(shè),千陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
引入maven步驟看javacv去水印的文章
/** * 視頻文件指定時間段的幀截取 * @param file * @param start * @param end */ public static ListvideoIntercept(File file, Integer start, Integer end) { Frame frame = null; List files = Lists.newArrayList(); FFmpegFrameGrabber fFmpegFrameGrabber = new FFmpegFrameGrabber(file); String filePath = "D://video//images//"; String fileTargetName = "movie"; try { fFmpegFrameGrabber.start(); int ftp = fFmpegFrameGrabber.getLengthInFrames(); System.out.println("開始視頻提取幀"); for (int i=0 ; i < ftp ; i++){ if( i >= start && i <= end){ frame = fFmpegFrameGrabber.grabImage(); doExecuteFrame(frame, filePath, fileTargetName, i ,files); } } System.out.println("============運行結(jié)束============"); fFmpegFrameGrabber.stop(); } catch (IOException E) { // Loggers.ERROR.error("視頻抽幀異常", e); } return files; } public static void doExecuteFrame(Frame frame, String targetFilePath, String targetFileName, int index ,List files) { if ( frame == null || frame.image == null) { return; } Java2DFrameConverter converter = new Java2DFrameConverter(); String imageMat = "jpg"; String fileName = targetFilePath + targetFileName + "_" + index + "." + imageMat; BufferedImage bi = converter.getBufferedImage(frame); File output = new File(fileName); files.add(output); try{ ImageIO.write(bi, imageMat, output); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { List files = videoIntercept(new File("D://video//1553583033205-480p.mp4"), 10, 20); System.out.println(files); }
關(guān)于使用javacv怎么實現(xiàn)視頻抽幀就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。