java經過使用ffmpeg獲取視頻的碼率

工做過程當中有使用JAVA代碼獲取視頻碼率的場景,網上搜索了找到了利用ffmpeg來獲取,ffmpeg組件中有ffprobe是專門用來獲取視頻相關信息的。java

一、下載ffmpeg 官網:http://ffmpeg.org/,windows和linux版都有 解壓便可使用,linux下注意給ffprobe授予755權限。linux

二、準備程序json

第一步:獲取視頻格式信息windows

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解析app

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;
    }

第三步、測試ide

@Test
    public  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));
    }

第四步:測試結果測試

輸入圖片說明

與經過迅雷影音看到的碼率基本一致:ui

輸入圖片說明

附: ffprobe獲取的原始信息:code

{
    "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"
        }
    }
}
相關文章
相關標籤/搜索