我正在用Python和OpenCV制作一个视频编辑器,并测试不同的编解码器和文件格式组合。对于这个例子,我主要关注avi
和mp4
格式。我尝试了多种不同的四字符编解码器(http://www.fourcc.org/codecs.php),它们都保存了一部我可以播放的电影
令人困惑的是,当我重新加载它们并从电影中提取编解码器时,发现只有保存为avi
的电影似乎是使用原始编解码器保存的。下面的图表显示了用于编码的编解码器(使用cv2.VideoWriter_fourcc()
创建),然后是加载后从视频中提取的相应编解码器(使用get(cv2.CAP_PROP_FOURCC)
)。我还将大小以MB为单位放在括号中
对于avi(编码->;提取):
MJPG -> MJPG (3.9)
FFV1 -> FFV1 (12.3)
DIVX -> DIVX (0.7)
对于mp4:
MJPG -> mp4v (3.9)
FFV1 -> avc1 (26.1)
DIVX -> mp4v (0.7)
因此,您可以看到编码与mp4文件类型不匹配,即使文件大小大致匹配。avi和mp4的视频看起来几乎一样
加载的电影中的元数据对mp4不可信,编码对mp4不起作用,所以它选择默认值,还是其他什么
最有可能的情况是,您尝试使用不兼容的编解码器(视频内容的压缩方式)和容器(用于传输压缩视频(通常是音频、子片段等)的实际文件格式)的组合
相关问题 更多 >
编程相关推荐