0
我正在嘗試使用OpenCV(C++)讀取視頻文件,將濾鏡應用於每個幀並將新的修改後的幀寫入輸出文件。 代碼的關鍵部分是這些:OpenCV(C++):寫入與輸入相比生成大文件
int out_format = CV_FOURCC('M','P','4','2'); // can be another one
double fps = media.get(CV_CAP_PROP_FPS),
width = media.get(CV_CAP_PROP_FRAME_WIDTH),
height = media.get(CV_CAP_PROP_FRAME_HEIGHT);
// On Linux FFMPEG is used to write videos
VideoWriter writer("./" + outputname + ".mkv", out_format, fps, Size(width, height));
.......
.......
writer.write(newFrame); // Mat newFrame
事實是,我與編解碼器和視頻輸出格式不精通,所以我想知道爲什麼一個文件,該文件是大約280 MB產生的輸出2 GB。
這是一個編解碼器的問題?我曾嘗試DIVX,MPEG和其他。此外,一些輸出格式必須與特定的編解碼器一起使用。
你能檢查輸入視頻的編碼格式和比特率是什麼嗎? – Steeve
比特率看起來是23.67,輸入的四位數是AVC1 – diningphil
你可以嘗試調用'writer.set(VIDEOWRITER_PROP_QUALITY,0.1);'在寫入之前?根據[this],默認設置似乎爲100%質量(http://docs.opencv.org/trunk/d4/d15/group__videoio__flags__base.html#gga41c5cfa7859ae542b71b1d33bbd4d2b4a1cc2ab47f60a115ff9624ff71715b93b)。 – Steeve