如何固定ffmpeg的比特率



我正在构建一个简单的java应用程序来广播网络摄像头到服务器上监听

localhost:8082

和下面的Java程序

private String frameRate = "60";
private String bitRate = "100k";
private String param = " -s 640x480 -f video4linux2 -i /dev/video0 -f mpeg1video  -r "+frameRate+" -b:v "+bitRate+" http://localhost:8082/raj/640/480/";
private String command  =" ffmpeg ";
//to execute
proc = rt.exec(command +" "+param);
proc.waitFor();

以下是从起始点到5秒的输出。

frame=   27 fps=  0 q=5.4 size=      88kB time=0.43 bitrate=1655.4kbits/s dup=18 drop=0    
frame=   59 fps= 55 q=11.6 size=     146kB time=0.97 bitrate=1238.3kbits/s dup=45 drop=0    
frame=   94 fps= 60 q=26.1 size=     207kB time=1.55 bitrate=1095.6kbits/s dup=69 drop=0    
frame=  125 fps= 60 q=14.3 size=     235kB time=2.07 bitrate= 929.9kbits/s dup=83 drop=0    
frame=  156 fps= 60 q=16.1 size=     276kB time=2.58 bitrate= 875.5kbits/s dup=97 drop=0    
frame=  187 fps= 60 q=15.4 size=     306kB time=3.10 bitrate= 807.9kbits/s dup=111 drop=0    
frame=  218 fps= 60 q=22.1 size=     343kB time=3.62 bitrate= 777.8kbits/s dup=125 drop=0    
frame=  249 fps= 60 q=24.8 size=     379kB time=4.13 bitrate= 751.7kbits/s dup=139 drop=0    
frame=  280 fps= 60 q=31.0 size=     402kB time=4.65 bitrate= 708.8kbits/s dup=153 drop=0    
frame=  311 fps= 60 q=31.0 size=     436kB time=5.17 bitrate= 690.7kbits/s dup=167 drop=0    
frame=  342 fps= 60 q=31.0 size=     458kB time=5.68 bitrate= 659.5kbits/s dup=181 drop=0  

最初,比特率是ok的,但它是按降序排列的。这是由于java程序或ffmped。如何固定比特率?

如果图像具有低运动(如安全摄像机),编码器可能不需要超过700kbits来编码图像。如果你看一下q值,它是31(31是最大值),所以量化器在尽可能高的质量下编码,仍然可以达到目标比特率。你可以增加分辨率给编码器更多的工作,或者你可以添加填充。或者你可以享受带宽节省:)

相关内容

  • 没有找到相关文章

最新更新