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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 通过ffmpeg 将海康视频转码

發布時間:2023/12/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 通过ffmpeg 将海康视频转码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

保存海康的視頻成MP4格式的視頻,最后無法在網頁上播放,或者干脆本地無法打開;

既然使用ffmpeg作為視頻轉碼工具,首先需要有這個;

idea下FFmpeg存放的位置,或者可以自定將其配置到環境變量中,我這邊是為了防止在其他地方部署每次都要配置這個環境變量,所以直接放在了資源文件夾下面;

public class VideoUtils {private static Logger log = Logger.getLogger(VideoUtils.class);private static String ffmpegPath = null;// 獲取FFmpeg所在路徑,這邊是直接丟在Resource文件夾下面ffmpeg文件夾下public static String getFFPath() {if (ffmpegPath != null) {return ffmpegPath;}ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();try {//獲取所有匹配的文件Resource resource = resolver.getResource("ffmpeg/ffmpeg.bat");//獲得文件流,因為在jar文件中,不能直接通過文件資源路徑拿到文件,但是可以在jar包中拿到文件流InputStream stream = resource.getInputStream();String targetFilePath = resource.getFile().getParent();return targetFilePath;} catch (IOException e) {return null;}}public static boolean processMP4(String inputPath, String outputPath) {long start = System.currentTimeMillis();log.info("接收到視頻文件,開始對文件進行轉碼...");if(StringUtils.isBlank(inputPath)){return null;}// 構建 ffmpeg -i 1.mp4 -c copy -an 2.mp4StringBuilder commend = new StringBuilder();String ffPath = getFFPath(); // commend.append("cmd /k \"cd "+ ffPath+" ");//可以設置環境變量從而省去這行commend.append(" ffmpeg ");commend.append(" -i ");commend.append(inputPath);commend.append(" -c copy ");commend.append(" -an ");commend.append(outputPath);try {File dir = new File(ffPath);String[] cmd = new String[]{"cmd", "/c", commend.toString()};Process p = Runtime.getRuntime().exec(cmd, null, dir);//1. startBufferedReader buf = null; // 保存ffmpeg的輸出結果流String line = null;//read the standard outputbuf = new BufferedReader(new InputStreamReader(p.getInputStream()));StringBuffer sb = new StringBuffer();while ((line = buf.readLine()) != null) {// 輸出到控制臺,這部分都可以刪除System.out.println(line);sb.append(line);continue;}int ret = p.waitFor();//這里線程阻塞,將等待外部轉換進程運行成功運行結束后,才往下執行//1. endlog.info("結束視頻轉碼,共耗時:" + (System.currentTimeMillis() - start) +"耗秒");return true;} catch (Exception e) {System.out.println(e);return false;}}// 刪除原始文件public static void delOriginalFile(String filePath) {File file = new File(filePath);if (file.exists())file.delete();}public static void main(String[] args) {String input = "E:\\202110091408390859.mp4";String output = "E:\\new3.mp4";System.out.println(processMP4(input, output));delOriginalFile(input);} }

總結

以上是生活随笔為你收集整理的java 通过ffmpeg 将海康视频转码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。