1. 程式人生 > >Opencv各種編碼器下視訊檔案大小對比

Opencv各種編碼器下視訊檔案大小對比

轉載自http://blog.csdn.net/dcrmg/article/details/52215930

做視訊樣本切割,切片用ffv1編碼,比原資料大了幾十倍,看到了這篇文章,防止找不到記錄一下

開啟視訊檔案或攝像頭視訊需要使用Opencv中的VideoCapture類,儲存視訊或攝像頭視訊到本地磁碟,需要使用Opencv中的VideoWriter類,使用都很簡單,這篇文章就記錄一下VideoWriter類的用法,主要關注一下VideoWriter在不同編碼方式下儲存視訊檔案大小的區別。

 

VideoWriter類的一個常用構造方式如下:

 

[cpp]
  view plain  copy  
  1. VideoWriter(const string& filename, int fourcc, double fps,Size frameSize, bool isColor=true);  

 

 

其中fourcc代表了所使用的編碼方式,如果輸入-1,則會在執行時候彈出選擇對話方塊,可以選擇編碼器:

 

其他的int型的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

 

下邊這個例子(略),使用了以上所列的各種編碼方式儲存的攝像頭視訊,在我的機器上第6、7種方式,即H263和H263I兩種方式不能使用,可能是本機上沒有對應的編解碼器。

 

通過攝像頭錄製了長約5分鐘的視訊,在D盤下生成的檔案如下:

 

生成檔案佔用空間最小的編碼方式是 MPEG-4.2 codec,約為19MB。用紅線段標識,對應在VideoWriter類的建構函式引數為CV_FOURCC('M', 'P', '4', '2') 。

最大的是MPEG-1 codec,用藍線段標識,約為111MB。對應在VideoWriter類的建構函式引數為CV_FOURCC('P','I','M','1') ,所佔磁碟空間是前者的5.7倍。所以如果需要24小時全天候錄製監控,基於磁碟空間的考慮,可以優先使用MPEG-4.2的編解碼方式。