java通过使用ffmpeg获取视频的码率
生活随笔
收集整理的這篇文章主要介紹了
java通过使用ffmpeg获取视频的码率
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
工作過程中有使用JAVA代碼獲取視頻碼率的場景,網上搜索了找到了利用ffmpeg來獲取,ffmpeg組件中有ffprobe是專門用來獲取視頻相關信息的。
1、下載ffmpeg 官網:http://ffmpeg.org/,windows和linux版都有 解壓即可使用,linux下注意給ffprobe授予755權限。
2、準備程序
第一步:獲取視頻格式信息
public static String getBitrate(String ffprobePath, String filePath) {String cmd = ffprobePath + " -v quiet -print_format json -show_format -i " + filePath;System.out.println(cmd);try {Runtime run = Runtime.getRuntime();Process p = run.exec(cmd);BufferedInputStream in = new BufferedInputStream(p.getInputStream());BufferedReader inBr = new BufferedReader(new InputStreamReader(in));StringBuffer sb = new StringBuffer();String lineStr;while ((lineStr = inBr.readLine()) != null)sb.append(lineStr);if (p.waitFor() != 0) {if (p.exitValue() == 1)System.err.println("命令執行失敗!");}inBr.close();in.close();return analyseInfo(sb.toString());} catch (Exception e) {e.printStackTrace();}return "";}第二步:解析ffprobe返回的json結果,此處使用jackson解析
private static String analyseInfo(String json) throws IOException {HashMap map = mapper.readValue(json, HashMap.class);Map format = (Map) map.get("format");String bitrate = (String) format.get("bit_rate");return bitrate;}第三步、測試
@Testpublic void test_get_bit_rate(){String file = "D:\\server\\1414079044194DAW1XHPV.flv";//String file = "F:\\迅雷下載\\N間諜.BD1280高清特效中英雙字.mp4";String ffprobe = "D:\\Soft\\ffmpeg\\bin/ffprobe.exe";System.out.println(getBitrate(ffprobe , file));}第四步:測試結果
與通過迅雷影音看到的碼率基本一致:
附: ffprobe獲取的原始信息:
{"format": {"filename": "/root/tmp/1414079044194DAW1XHPV.flv","nb_streams": 2,"nb_programs": 0,"format_name": "flv","format_long_name": "FLV (Flash Video)","start_time": "0.134000","duration": "240.530000","size": "11033501","bit_rate": "366972","probe_score": 100,"tags": {"encoder": "Lavf53.24.2"}} }轉載于:https://my.oschina.net/sannychan/blog/514798
總結
以上是生活随笔為你收集整理的java通过使用ffmpeg获取视频的码率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ViewPager+Fragment基本
- 下一篇: centos下安装VMware Serv