我想在视频文件上叠加一些传感器信息(时间序列)。我认为Python和OpenCV会是一个不错的方法,并开始学习基础知识,所以我决定制作我能想到的最简单的玩具示例:加载视频并逐帧复制。逐帧复制视频时没有视频输出
这是我的代码:
import cv2
src = cv2.VideoCapture('input.mp4')
if not src.isOpened():
print("Error opening src")
quit()
width = int(src.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH))
height = int(src.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT))
fps = src.get(cv2.cv.CV_CAP_PROP_FPS)
fourcc = cv2.cv.CV_FOURCC(*'XVID')
dest = cv2.VideoWriter('output.avi', fourcc, fps, (height, width))
if not dest.isOpened():
print("Error opening dest")
quit()
ret, frame = src.read()
while ret:
dest.write(frame)
ret, frame = src.read()
dest.release()
src.release()
- 预计:作为一个XviD格式文件
output.avi
- 的
input.mp4
完全相同的副本观察:output.avi
是一个5.6 KB的文件,这显然只包含一个AVI头。它不能通过mplayer
复制,也不能通过cv2.VideoCapture
阅读。
这是我的设置:
- 的Debian GNU/Linux的9
- 的Python 2.7.13
cv.__version__
返回 '2.4.9.1'- FFmpeg的3.2.5-1
对于可重复性,这里有一个命令行来下载一个非常短的YouTube视频youtube-dl
:
youtube-dl 'https://www.youtube.com/watch?v=RfkcI8dhfsQ' -o input.mp4
'read'是否真的成功? –
我这么认为。循环执行51次。 (关于我在我的问题中列出的示例YouTube视频) – giusti
我现在已经阅读了Open CV 2x与FFmpeg 3x不兼容的建议,但我不知道如何确认这与我的情况是否相关。 – giusti