首页 > 解决方案 > 带有 HEVC 编解码器的 cv2.VideoWriter() 文件格式 .mp4

问题描述

我正在使用 cv2.VideoWriter() 从单个摄像机录制并将视频写入带有 HEVC 编解码器的 .mp4 文件。我以前使用以下代码在(Windows)笔记本电脑上使用此脚本:

video = cv2.VideoCapture(0)

frame_width = int(video.get(3))
frame_height = int(video.get(4))

# create output file

out1 = cv2.VideoWriter(videoFileName, cv2.VideoWriter_fourcc(str('H'), str('E'), str('V'), str('C')), 30.0,
                      (frame_width, frame_height))

我正在新笔记本电脑上设置脚本,上面的代码不再记录并引发以下错误:

OpenCV: FFMPEG: tag 0x43564548/'HEVC' is not supported with codec id 173 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x31766568/'hev1'
[hevc_mf @ 0000028eed319d00] COM must not be in STA mode
[ERROR:0] global /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2794) open Could not open codec hevc_mf, error: Unspecified error
[ERROR:0] global /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2811) open VIDEOIO/FFMPEG: Failed to initialize VideoWriter

我已经阅读了许多论坛,他们认为 cv2 无法做到这一点,因为它不支持 HEVC 编解码器。我还阅读了 .mp4 和 HEVC 可能不兼容。但是,它以前可以在另一台笔记本电脑上运行。因此,我知道它以某种方式起作用。注意:我最初没有在另一台笔记本电脑上进行设置。

我也试过

# fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# fourcc = cv2.VideoWriter_fourcc(*'h264')
# out1 = cv2.VideoWriter(videoFileName, fourcc, 30.0, (frame_width, frame_height))

mp4v 工作但不是我最初拥有的编解码器,并且 h264 抛出类似于上面的错误。

有没有人遇到过这个问题的解决方案?

附加信息:Windows 10、Python 3.8.10(通过 Pycharm)、通过 opencv-python 安装并使用“from cv2 import cv2”导入的 cv2

标签: pythonvideocv2

解决方案


推荐阅读