【发布时间】:2017-10-11 22:32:32
【问题描述】:
在 OSX 上,我可以从我的网络摄像头录制并使用以下简单脚本编写视频文件:
import cv2
camera = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object to save the video
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_writer = cv2.VideoWriter('output.avi', fourcc, 25.0, (640, 480))
while True:
try:
(grabbed, frame) = camera.read() # grab the current frame
frame = cv2.resize(frame, (640, 480)) # resize the frame
video_writer.write(frame) # Write the video to the file system
except KeyboardInterrupt:
camera.release()
break
生成的 avi 文件非常大。我想要一个较小的文件,最好是 mp4。所以我将文件名更改为output.mp4,将fourcc编解码器更改为H264。这写了一个有效的视频文件,但给了我以下错误:
$ python write_video_file.py
OpenCV: FFMPEG: tag 0x34363248/'H264' is not supported with codec id 28 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x00000021/'!???'
因为我认为我在 ffmpeg 中缺少 H264 编解码器,所以我决定卸载 ffmpeg 和 opencv 并重新安装它们以支持 H264。为此,我使用了以下命令:
# First ffmpeg
brew install ffmpeg --with-fdk-aac --with-libvidstab --with-openh264 \
--with-openjpeg --with-openssl --with-tools --with-webp --with-x265 --with-zeromq
# then opencv3
brew tap homebrew/science
brew install opencv3 --with-contrib --with-ffmpeg --with-tbb
之后我再次运行脚本,使用以下组合:
-
output.mp4与H264 -
output.mp4与X264
不幸的是,我仍然收到 OpenCV 警告/错误。该文件是可读的,但我收到这些错误仍然让我很恼火。有谁知道如何让 OpenCV 使用 H264 编解码器编写 mp4 视频文件?
欢迎所有提示!
【问题讨论】:
-
您尝试重启了吗?
-
@StavrosAvramidis - 不,重新启动没有帮助
-
确保你有 ffdshow(x32 和 x64)
-
@StavrosAvramidis -
ffdshow不是用于解码/显示文件,而不是编码/写入文件吗? -
是的,但你永远不知道
标签: python opencv video ffmpeg codec