Opencv各種編碼器下視訊檔案大小對比
轉載自http://blog.csdn.net/dcrmg/article/details/52215930
做視訊樣本切割,切片用ffv1編碼,比原資料大了幾十倍,看到了這篇文章,防止找不到記錄一下
開啟視訊檔案或攝像頭視訊需要使用Opencv中的VideoCapture類,儲存視訊或攝像頭視訊到本地磁碟,需要使用Opencv中的VideoWriter類,使用都很簡單,這篇文章就記錄一下VideoWriter類的用法,主要關注一下VideoWriter在不同編碼方式下儲存視訊檔案大小的區別。
VideoWriter類的一個常用構造方式如下:
[cpp]
- 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的編解碼方式。