CV2 Fourcc解析


使用OpenCV輸出攝像頭視頻要注意輸出路徑必需添加視頻格式的后綴名,如output.mp4。

import cv2
 
capture = cv2.VideoCapture('test.mp4')
 
#cv2.VideoCapture.get(CV_CAP_PROP_FORMAT)
fps = capture.get(cv2.CAP_PROP_FPS)
print 'fps is ' + str(fps)
 
codec = int(capture.get(cv2.CAP_PROP_FOURCC))
print ('codec is %x'%(codec))
print ('codec is ' + chr(codec&0xFF) + chr((codec>>8)&0xFF) + chr((codec>>16)&0xFF) + chr((codec>>24)&0xFF))

cv2.CAP_PROP_FOURCC 用來得到原視頻的編碼格式。


如果是MPEG4編碼,打印結果為 “codec is 7634706d”,十六進制對應的ASCII為 'v'   '4'    'p'    'm'

如果是H264編碼,打印的結果為   "codec is 31637661",  十六進制對應的ASCII為 '1'   'c'    'v'    'a'

查詢Video Codecs by FOURCC(http://www.fourcc.org/codecs.php

1. 搜索"mp4v" (和得到的16進制倒序排列),信息如下

Eval download (MP4V) info
Homepage: Eval download

Owner: Media Excel

MPEG-4 Video. LEAD's MCMP codec also supports this format.

2. 搜索“avc1”(和得到的16進制倒序排列),信息如下

AVC1 info
Owner: Apple

Apple's version of the MPEG4 part 10/H.264 standard apparently.

 

出現OpenCV: FFMPEG: tag 0x00000021/'!???' is not found (format 'mp4 / MP4 (MPEG-4 Part 14)')'報錯解決方法:

將fourcc = cv2.VideoWriter_fourcc(*"MJPG")的"MJPG"改成"mp4v"即可。

 

現在編碼用到了CV_FOURCC獲取編碼格式:

CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codec
CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec 
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec 
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec 
CV_FOURCC('U', '2', '6', '3') = H263 codec 
CV_FOURCC('I', '2', '6', '3') = H263I codec 
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

CV_FOURCC('A', 'V', 'C', '1') =  H264 codec

 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM