分享关于如何检测视频流码率

由于项目需要检测媒体流的码率,有很多方法,但是不建议使用ffprobe进行检测

root:~# ffprobe -v quiet -show_streams 1.flv|grep bit_rate
bit_rate=128000
max_bit_rate=N/A

有2点原因

1、ffprobe检测rtmp、http等流不一定能检测出码率。因为通过一些直播服务器,可能该数据会丢失。

2、检测的码率是设置在媒体头的数据,不一定是真实码率。比如对推流参数的调整,即使ffprobe检测出来的是128K,但是实际可能是1M也有可能。

推荐的2种方法

1、通过ffmpeg命令行推流可以获取到平均码率信息,其中的bitrate就是。这里的输入源支持各种形式,如文件或者流地址等

#ffmpeg -re -y -i ./1.flv  -c:v copy -f flv /dev/null

frame=  326 fps= 25 q=-1.0 Lsize= 212kB time=00:00:12.82 bitrate= 135.7kbits/s speed=   1x

2、对于流地址可以通过下载媒体流文件的大小再除以时间,也可得到平均码率.

如我们先录制10秒视频

ffmpeg -re -y -i rtmp://127.0.0.1/live/1  -c:v copy -t 00:00:10 -f flv ./1.flv

得到它的大小

root:~# ls -l 1.flv
-rw-r--r-- 1 root root 217449 8月   4 17:26 1.flv

217449B÷10秒÷1000=21.7449 KByte/s

21.7449 KByte/s x 8= 173.9592Kbit/s 这就得到我们想要的这个视频在这10秒的平均码率大小。

坑:

有时变换ffmpeg的保存格式得出的码率其实相差不大,但是如果做了转码(如-c:v libx264或者用了其他录制工具录下来)可能会导致码率变化,导致数据不准。

大家有啥又快又方便又准的方法也可以提供一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值