日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg+java截取视频帧

發(fā)布時(shí)間:2023/12/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg+java截取视频帧 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ffmpeg+java截取視頻幀

1.下載ffmpeg

鏈接: link.


解壓文件,進(jìn)入bin目錄,能看到ffmpeg.exe、ffplay.exe、ffprobe.exe三個(gè)文件。不用管它,進(jìn)行下一步。

2、設(shè)置環(huán)境變量
看到網(wǎng)上很多人下載ffmpeg是為了使用Captura,如果你也是的話(huà),直接跳過(guò)這一步。如果是另有他用,由于該程序只有命令行模式,為了方便使用,需要設(shè)置環(huán)境變量。點(diǎn)擊“系統(tǒng)屬性->高級(jí)系統(tǒng)設(shè)置->環(huán)境變量->用戶(hù)變量”,選擇“Path”條目,點(diǎn)擊“編輯->新建”,把第一步的bin文件夾路徑復(fù)制粘貼進(jìn)去,然后點(diǎn)擊確定即可。


打開(kāi)cmd命令行窗口,輸入命令“ffmpeg –version”。窗口返回ffmpeg的版本信息,說(shuō)明安裝成功。接下來(lái)你就可以直接使用命令行執(zhí)行ffmpeg命令進(jìn)行各種媒體格式的轉(zhuǎn)換了。

3.代碼實(shí)現(xiàn)

import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner;/*** <b>概述</b>:test2類(lèi)<br>* TODO* <p>* <b>功能</b>:<br>* TODO** @author SuSVIP*/ public class test2 {// public static final String FFMPEG_PATH = "E:/ffmpeg/ffmpeg.exe";public static boolean processImg(String veido_path, String ffmpeg_path) {File file = new File(veido_path);if (!file.exists()) {System.err.println("路徑[" + veido_path + "]對(duì)應(yīng)的視頻文件不存在!");return false;}//獲取文件路徑,有后綴,eg:獲取E:\tmp\test\source\video\a.flvveido_path = veido_path.trim();//獲取文件路徑,無(wú)后綴,eg:獲取E:\tmp\test\source\video\aString filename = veido_path;String caselsh = filename.substring(0,filename.lastIndexOf("."));//獲取文件名,有后綴,eg:獲取a.flvString filePath1 = veido_path;//String fileName1 = filePath1.substring(filePath1.lastIndexOf("\\")+1);//獲取文件名,無(wú)后綴,eg:獲取aString filePath = veido_path;String fileName2 = filePath.substring(filePath.lastIndexOf("\\")+1);String name = fileName2.substring(0,fileName2.lastIndexOf("."));//獲取文件名的后綴,eg:獲取flvString filePath3 = veido_path;String fileName3 = filePath.substring(filePath3.lastIndexOf("\\")+1);String extension=fileName3.substring(fileName3.lastIndexOf(".")+1);//首先創(chuàng)建一個(gè)File類(lèi)對(duì)象,指定一個(gè)文件路徑File file2 = new File(caselsh);if(!file2.exists()) {//如果文件夾不存在System.err.println("文件夾不存在");file2.mkdir();//創(chuàng)建文件夾System.err.println("文件夾創(chuàng)建成功");}//保存文件的路徑String image_path = caselsh+"\\"+name+"_%d.jpg";System.out.println(image_path);List<String> commands = new java.util.ArrayList<String>();/*1.//截取縮略圖commands.add(ffmpeg_path);commands.add("-i");commands.add(veido_path);commands.add("-y");commands.add("-f");commands.add("image2");commands.add("-ss");commands.add("8");// 這個(gè)參數(shù)是設(shè)置截取視頻多少秒時(shí)的畫(huà)面// commands.add("-t");// commands.add("0.001");commands.add("-s");commands.add("700x525");commands.add(veido_path.substring(0, veido_path.lastIndexOf(".")).replaceFirst("vedio", "file") + ".png");*//* //截取視頻幀至總視頻所在文件夾commands.add(ffmpeg_path);commands.add("-i");commands.add(veido_path);commands.add("-vf");commands.add("fps=1");commands.add(veido_path.substring(0, veido_path.lastIndexOf(".")).replaceFirst("vedio", "file") + "_%d.png");*/commands.add(ffmpeg_path);commands.add("-i");commands.add(veido_path);commands.add("-vf");commands.add("fps=1");commands.add(image_path);try {ProcessBuilder builder = new ProcessBuilder();builder.command(commands);builder.start();System.out.println("截取成功");return true;} catch (Exception e) {e.printStackTrace();return false;}}public static void main(String[] args) {//Scanner data=new Scanner(System.in);//String videopath=data.next();processImg("E:\\tmp\\test\\source\\video\\a.flv", "D:\\ffmpeg\\ffmpeg-4.4\\bin\\ffmpeg.exe");} }

將main方法中的視頻路徑改為要截取視頻幀的視頻路徑

總結(jié)

以上是生活随笔為你收集整理的ffmpeg+java截取视频帧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。