2016-11-13 7 views
0

私は多くのコーデックを試しましたが、最後のものは0バイトビデオを生成しました。最後のコーデックはビデオファイルを生成しますが、再生できません。この問題は私を夢中にさせています。私が使用しているコードは、他のユーザーによってテストされています。 opencv_ffmpeg310_64.dllファイルをc:\ python2.7フォルダにコピーしました。 私はWindows 10とopencv 3.1.0を使用しています。すべてのタイプのCODECは動作していませんでした。はpythonから保存されたビデオを再生できません2.7

import numpy as np 
import cv2 

    cap = cv2.VideoCapture(0) 

    # Define the codec and create VideoWriter object 
# Define the codec and create VideoWriter object 
#fourcc = cv2.VideoWriter_fourcc(*'FFV1') 
#fourcc = cv2.VideoWriter_fourcc(*'XVID') 
#fourcc = cv2.VideoWriter_fourcc(*'DIVX') 
#fourcc = cv2.VideoWriter_fourcc(*'DIV3') 
#fourcc = cv2.VideoWriter_fourcc('F','M','P','4') 
#fourcc = cv2.VideoWriter_fourcc('D','I','V','X') 
#fourcc = cv2.VideoWriter_fourcc('D','I','V','3') 
#fourcc = cv2.VideoWriter_fourcc('F','F','V','1') 


fourcc = cv2.VideoWriter_fourcc('M','J','P','G') 
    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() 

答えて

1

私は私がやったことは「-1」と入力することで可能CODEC値を取得することでした代わりに「FOURCC」で、その後FOURCCコーデックのウェブサイトhttps://www.fourcc.org/codecs.phpにそのコーデックの4桁のコードを見て、答えを見つけました。 私の場合CinemaxコーデックCDIV

SO first step: find the code and enter by hand manually and see if the video is made and is playable 

#use -1 below for entering the codec by hand 
#out = cv2.VideoWriter('output.avi',-1, 20.0, (640,480)) 

second step: from the above step find out which codec worked for you and then look up the four digit code on the fourcc site and plug it in 

fourcc = cv2.VideoWriter_fourcc(*'CVID') 
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) 
関連する問題