2015-05-28 29 views
9

Tôi muốn quay video từ webcam và lưu video vào tệp mp4 bằng cách sử dụng opencv. Tôi tìm thấy mã ví dụ trên stackoverflow (dưới đây) mà các công trình lớn. Điều duy nhất là tôi đang cố gắng lưu nó dưới dạng mp4 chứ không phải avi. Một phần của những gì tôi không nhận được là đối số 'XVID' được truyền cho nhà văn FOURCC được cho là, tôi nghĩ, một bộ giải mã mp4 (từ this link). Nếu tôi thay đổi tên tệp thành 'output.mp4', nó cho tôi biết rằng thẻ không hợp lệ, vì vậy tôi phải tin rằng codec XVID thực sự tạo một tệp avi. Đây có phải là một câu hỏi ngu ngốc? Làm cách nào để ghi vào mp4?Viết video mp4 bằng python opencv

Tôi đã tìm thấy các liên kết hiển thị cách chuyển đổi avi sang mp4 sau khi thực tế nhưng điều đó có vẻ không hiệu quả. Có vẻ như tôi sẽ có thể làm điều đó trong lúc viết ban đầu.

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 

# Define the codec and create VideoWriter object 
fourcc = cv2.cv.CV_FOURCC(*'XVID') 
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) 

while(cap.isOpened()): 
    ret, frame = cap.read() 
    if ret==True: 
     frame = cv2.flip(frame,0) 

     # write the flipped frame 
     out.write(frame) 

     cv2.imshow('frame',frame) 
     if cv2.waitKey(1) & 0xFF == ord('q'): 
      break 
    else: 
     break 

# Release everything if job is finished 
cap.release() 
out.release() 
cv2.destroyAllWindows() 
+0

Hãy thử sử dụng -> fourcc = cv2.cv.CV_FOURCC (* 'H264') – Aphire

+0

Bạn sẽ cần ffmpeg dù – Aphire

+1

Hãy thử với CV_FOURCC ('m', 'p', '4', 'v') . Dưới đây là ví dụ: http://stackoverflow.com/a/28904970/4481702 –

Trả lời

7

Điều này phù hợp với tôi.

self._name = name + '.mp4' 
self._cap = VideoCapture(0) 
self._fourcc = VideoWriter_fourcc(*'MP4V') 
self._out = VideoWriter(self._name, self._fourcc, 20.0, (640,480)) 
+1

Đã hai năm rồi! Bạn đã không mong đợi điều này upvote, huh? : P Tôi đã sử dụng H264 để ghi vào một tập tin mp4. Nó tạo ra video laggy khi tìm kiếm, gợi ý này đã giúp tôi. MP4V codec giải quyết được vấn đề! :) – varun

+1

@varun ha no didnt thấy nó đến :) .. vui vì nó đã giúp bạn chồi. – 10SecTom

+0

@ 10SecTom thực hiện điều này yêu cầu ffmpeg phải có mặt? –

Các vấn đề liên quan