【发布时间】:2020-05-09 01:13:09
【问题描述】:
我正在使用 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,因此它选择了默认值,还是其他?
【问题讨论】: