我正在使用OpenCV在Python中制作视频编辑器,并测试编解码器和文件格式的不同组合。对于此示例,我主要关注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不起作用,因此它选择了默认值,或其他原因?
最佳答案
最有可能您尝试使用编解码器(如何压缩视频内容)和容器(用于传输不兼容的压缩视频(实际是音频,字幕)等的实际文件格式)的组合。
关于python - OpenCV:对于mp4文件,保存电影作品但编解码器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61690532/