使用 H264 编解码器将视频保存在 opencv 中
Posted
技术标签:
【中文标题】使用 H264 编解码器将视频保存在 opencv 中【英文标题】:Save video in opencv with H264 codec 【发布时间】:2022-01-11 18:31:02 【问题描述】:我正在使用opencv-python==4.5.1.48
和python3.9
码头工人。我想以 h264 格式保存视频。这是我保存视频的功能:
import cv2
def save_video(frames):
fps = 30
video_path = '/home/save_test.mp4'
fourcc = cv2.VideoWriter_fourcc(*'h264')
video_writer = cv2.VideoWriter(video_path, fourcc, fps, (112, 112))
for frame in frames:
video_writer.write(frame)
video_writer.release()
当我使用 .mp4 格式保存视频时,出现以下错误:
OpenCV:FFMPEG:标签 0x34363268/'h264' 不支持编解码器 ID 27 和格式 'mp4 / MP4 (MPEG-4 Part 14)' OpenCV: FFMPEG: fallback to 使用标签 0x31637661/'avc1' 找不到编解码器 id 27 的编码器: 未找到编码器
我搜索并阅读了一些解决方案,但没有一个能解决我的问题。
更新:
我还安装了libx264-dev
,这是在这个post 中推荐的,但是没有用。
【问题讨论】:
使用avc1
fourcc -- opencv 可能使用它自己的ffmpeg,所以你在系统中安装什么并不重要
谢谢。我将 h264
更改为 avc1
并收到此错误:Could not find encoder for codec id 27: Encoder not found
因为没有帮助,我猜你不能使用 H.264 github.com/opencv/opencv-python/issues/207 或者你必须自己构建 OpenCV,或者找到一个无视 GPL 的包——使用不同的编解码器. MJPG
始终有效,因为它内置于 OpenCV 中。或者mp4v
,那是H.264的前身。
【参考方案1】:
最后,我找到了解决方案。我可以在ubuntu:20.04
docker 中解决我的问题。您应该注意的重要一点是,您应该通过 apt-get install python3-opencv
安装 OpenCV,而不是使用 pip
。
【讨论】:
尝试在 ubuntu:20.04 上安装 python3-opencv 但没有运气。你能分享你的dockerfile吗? OpenCV:FFMPEG:标签 0x34363268/'h264' 不支持编解码器 id 27 和格式'mp4 / MP4(MPEG-4 第 14 部分)' OpenCV:FFMPEG:后备使用标签 0x31637661/'avc1' [错误:0@1.556 ] global /io/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2767) open 找不到 codec_id=27 的编码器,错误:找不到编码器 [ERROR:0@1.556] global /io/opencv/modules/videoio /src/cap_ffmpeg_impl.hpp (2839) 打开 VIDEOIO/FFMPEG: 无法初始化 VideoWriter 我还安装了这些 ubuntu 软件包: RUN apt-get update && apt-get install -y \ wget \ build-essential \ pkg-config \ cmake \ ninja-build \ libgl1-mesa-glx \ libleptonica-dev\ffmpeg\zlib1g-dev\libncurses5-dev\libgdbm-dev\libnss3-dev\libssl-dev\libreadline-dev\libffi-dev\python3.8\python3-pip\python3-opencv@y2kbug 我仍然收到相同的错误消息。你可以看看我的 dockerfile 吗? pastebin.com/RvCK0YBR(顺便说一句为什么标记用户名不起作用) @y2kbug 好的。我会用我的 python 示例代码检查你的 DockerFile 并将结果通知给你。 @y2kbug 我测试它。当我使用 pip 安装 OpenCV 时,它可以工作。在您的 dockerfile 中,您使用 pip 安装 OpenCV。以上是关于使用 H264 编解码器将视频保存在 opencv 中的主要内容,如果未能解决你的问题,请参考以下文章