这几天研究了一下录像代码,使用的OpenCV/VideoWriter。前后进行了一番分析,改进了代码。然后发现一个怪事:播放产生的录像文件,花屏。
花屏咱见得多了。一般出现在网络传输时,关键帧丢失导致的。咱这代码也没走网络,通过RTSP抓取的视频画面,然后写入文件。这就奇怪了。
代码有问题?恢复了代码,有所改善,也还存在。再分析,判断是跟分辨率相关。修改后的代码增大了分辨率,就容易发生。于是猜测如下:
- VideoWriter先进行编码。
- 得到编码数据写文件。
- 得到新的编码数据,当前还在写文件,直接丢弃新数据,管你是不是关键帧。
这样就能说得通了。