2017-01-31 38 views
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メガバイトのファイルは、の出力を生成理由を知りたいと思い、私はコーデックとビデオ出力フォーマットに堪能ではないよ、です2 GB。

コーデックに問題がありますか?私はDIVX、MPEGなどを試みました。さらに、一部の出力形式は特定のコーデックと一緒に行わなければなりません。

+0

入力ビデオのエンコード形式とビットレートは何ですか? – Steeve

+0

ビットレートは23.67で、入力の4ccはAVC1です – diningphil

+0

書き込みの前に 'writer.set(VIDEOWRITER_PROP_QUALITY、0.1);'を呼び出せますか? [this](http://docs.opencv.org/trunk/d4/d15/group__videoio__flags__base.html#gga41c5cfa7859ae542b71b1d33bbd4d2b4a1cc2ab47f60a115ff9624ff71715b93b)によると、デフォルト設定は100%の品質です。 – Steeve

答えて

0

、「M」、「P」を使用してみてください「4」、のMP4コンテナとの「V」コーデック、つまり、MP4コンテナの場合something.mp4

として、あなたのファイル名に拡張子を設定しますMPEG、MJPG、FMP4を試すこともできます

関連する問題