OpenCV:FFMPEG:不支持使用编解码器的标记0x34363268/'h264'

8

在Mac OS 10.13.6上安装opencv后:

conda install -c conda-forge ffmpeg
conda install -c conda-forge opencv

使用fourcc = cv2.VideoWriter_fourcc('h', '2', '6', '4')在videowriter中,我遇到了错误:

OpenCV: FFMPEG: tag 0x34363268/'h264' is not supported with codec id 27 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'

如何修复它?

据我所知,您需要libx264来编码h264,而默认情况下,您只能解码该格式。但我不确定安装libx264是否会解决您的问题。 - Dmitrii Z.
如果OpenCV使用ffmpeg进行写入,则avc1是mp4中h264的正确标签。 - Gyan
4个回答

4

编解码器是与平台相关的,这可能是问题的原因。尝试使用以下组合:

  • 文件扩展名 = test.mkv
  • 编解码器 = CV_FOURCC(*'X264)

这里是参考链接


1
这个完美地解决了问题。谢谢。@mrgloom 接受这个答案,以便对其他人有所帮助。 - Imran

4

您应该更改为:

fourcc = cv2.VideoWriter_fourcc('h', '2', '6', '4')

to:

fourcc = cv2.VideoWriter_fourcc(*'avc1')

19
sudo apt-get install libx264-dev 这个命令对我没有起作用。 - João Abrantes
由于这对我来说不是很清楚,我想把它放在这里作为参考...实际上avc1就是h264(来自维基百科:“高级视频编码(AVC),也被称为H.264…”https://en.wikipedia.org/wiki/Advanced_Video_Coding) - raphael

2

首先,正如一些答案所指出的那样,我们应该使用“AVC1”而不是“h264”。 其次,在使用opencv-python时,存在一些许可问题:https://github.com/opencv/opencv-python/issues/207 ,我们可能需要自行编译。


1
FourCC是一个4字节的代码,用于指定视频编解码器。可在fourcc.org中找到可用代码列表。它与平台有关。以下编解码器适合我使用。
  • 在Fedora中:DIVX、XVID、MJPG、X264、WMV1、WMV2。(XVID更可取。MJPG会导致视频大小较大。X264给出非常小的视频大小)
  • 在Windows中:DIVX(更多测试和添加)
  • 在OSX中:MJPG(.mp4)、DIVX(.avi)、X264(.mkv)。

来源


2
fourcc.org目前指向一个不相关的商业网站。(2022) - Daniel Chin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接