ffmpeg+java截取视频帧
生活随笔
收集整理的這篇文章主要介紹了
ffmpeg+java截取视频帧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ffmpeg+java截取視頻幀
1.下載ffmpeg
鏈接: link.
解壓文件,進入bin目錄,能看到ffmpeg.exe、ffplay.exe、ffprobe.exe三個文件。不用管它,進行下一步。
2、設置環境變量
看到網上很多人下載ffmpeg是為了使用Captura,如果你也是的話,直接跳過這一步。如果是另有他用,由于該程序只有命令行模式,為了方便使用,需要設置環境變量。點擊“系統屬性->高級系統設置->環境變量->用戶變量”,選擇“Path”條目,點擊“編輯->新建”,把第一步的bin文件夾路徑復制粘貼進去,然后點擊確定即可。
打開cmd命令行窗口,輸入命令“ffmpeg –version”。窗口返回ffmpeg的版本信息,說明安裝成功。接下來你就可以直接使用命令行執行ffmpeg命令進行各種媒體格式的轉換了。
3.代碼實現
import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner;/*** <b>概述</b>:test2類<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 + "]對應的視頻文件不存在!");return false;}//獲取文件路徑,有后綴,eg:獲取E:\tmp\test\source\video\a.flvveido_path = veido_path.trim();//獲取文件路徑,無后綴,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);//獲取文件名,無后綴,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);//首先創建一個File類對象,指定一個文件路徑File file2 = new File(caselsh);if(!file2.exists()) {//如果文件夾不存在System.err.println("文件夾不存在");file2.mkdir();//創建文件夾System.err.println("文件夾創建成功");}//保存文件的路徑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");// 這個參數是設置截取視頻多少秒時的畫面// 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方法中的視頻路徑改為要截取視頻幀的視頻路徑
總結
以上是生活随笔為你收集整理的ffmpeg+java截取视频帧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java操作数据库步骤_java数据库操
- 下一篇: 【弱监督显著目标检测论文】Weakly-