我想在視頻文件上疊加一些傳感器信息(時間序列)。我認爲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