【问题标题】:Python opencv videowriter issue: not compressing/writingPython opencv videowriter 问题:不压缩/写入
【发布时间】:2026-02-02 23:10:01
【问题描述】:

我目前在 python 中使用 opencv 来编写带压缩的视频。以下是代码中出现错误的部分。

fourcc=cv2.VideoWriter_fourcc(*'X264')
video = cv2.VideoWriter(outfiles[c],fourcc, fps, (width,height))

错误是

OpenCV:FFMPEG:标签 0x34363258/'X264' 不支持编解码器 id 28 和格式 在'mp4 / MP4(MPEG-4 第 14 部分)' OpenCV:FFMPEG:后备使用标签 0x00000021/'!???' 处理文件 test_videos/solidYellowLeft.mp4 OpenCV:FFMPEG:标签 0x34363258/'X264' 不支持编解码器 id 28 和形式 在'mp4 / MP4(MPEG-4 第 14 部分)' OpenCV:FFMPEG:后备使用标签 0x00000021/'!???'

我已经为较新版本的 H264 编码下载了 openh264-1.6.0-win64msvc.dll 文件。我尝试了不同的类型,H264、X264、XVID、VIDX,没有使用 MJPG,因为它会生成一个大文件。将 VideoWriter 中的第 5 个选项设置为 False(使其成为单通道)也不起作用。如果您对如何解决此问题或尝试其他方法有任何建议,那将有很大帮助。如果您需要更多信息,请告诉我。

【问题讨论】:

  • 仅仅下载h264实现库并不能解决你的问题。 cv2.VideoWriter 使用 FFMPEG API 进行视频编码,因此您的 FFMPEG 副本必须使用 libx264 支持构建。

标签: python opencv encoding


【解决方案1】:

如果有人遇到此错误,我通过使用删除错误的后备标签解决了它。

fourcc=0x00000021

【讨论】:

  • 我在 Ubuntu 16.04 上使用了这个解决方案,效果很好。但是我有一台 Ubuntu 18 机器,现在我又回到了同样的错误。有人升级时遇到这个问题吗?
【解决方案2】:

假设outfiles[c] 包含一个类似"out.mp4" 的文件名,以下对我来说是在带有NVidia GPU 的Ubuntu 16.04 机器上工作的。

fourcc = cv.VideoWriter_fourcc(*"mp4v")
video = cv2.VideoWriter(outfiles[c],fourcc, fps, (width,height))

感谢 jspier 回复here

【讨论】: