首页| 论坛| 消息

标题:Qt编写视频监控系统75-计算实时码率并显示
作者:liudianwu
日期:2023-05-25 08:42
内容:

## 一、前言
做监控摄像头的实时视频显示,一般还会要求统计实时码率显示在通道画面上,一个是为了测试下整个软件的性能,同时也看下当前到底是主码流还是子码流,设备到底是不是真的按照设定的码流大小来传输视频数据的。视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来的cbr(固定码率)与vbr(可变码率),都是在这方面做的文章,不过事情总不是绝对的,举例来看,对于一个音频,其码率越高,被压缩的比例越小,音质损失越小,与音源的音质越接近。
在ffmpeg解码后,如果需要统计实时码率,一般需要先知道帧率,比如帧率是25,则统计25帧视频的包大小,累计和就是码率,可能和实际会有一点偏差,偏差不大,这个码率计算后,通过信号发出去,接收到的地方,可以用文字水印的方式滤镜加入到视频帧中,然后用OSD的方式贴到摄像头。其实摄像头厂家可能也具备了实时码率的OSD标签设置,开启即可,开启后摄像头端就自己计算好了,传输过来的视频流就带上了码率。
## 二、效果图

## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_system。
## 四、相关代码
```cpp
void FFmpegThread::checkRealPacketSize(AVPacket *packet, int maxCount)
{
realPacketCount++;
realPacketSize += packet->size;
if (realPacketCount == maxCount) {
qreal kbps = (qreal)realPacketSize / 100;
//deb ..

回复 发表
主题 版块