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