最近折腾定了ffmpeg的视频流压缩解压缩,对纯C风格编程感触颇多,在这里写点经验教训。
在采集中使用OpenCV直接作为采集器,一个用来从摄像头读取数据的线程,一个用于压缩到文件,另一个应该会用于发送数据给远程。。
开到8M的带宽下
每次压缩use time :59087
带宽改为 0.5M use time :48454
画质的更替十分明显
根据测试,改分辨率不如直接改码率,但是在改码率的时候会需要重启编码器耗费大量时间,比较靠谱的解决方案是打开多级清晰度的多个编码器等待,根据网络状况动态选择。
至于技术细节没什么好说的,就是需要判断一个frame的header