2012-01-23 5 views
5

52fpsで流れるRGBイメージのストリームからビデオファイルを生成したい。私はopencv APIがかなり使い勝手が良いことを発見しました(cv :: VideoWriter)。問題は、VLCだけで製作されたAVIを再生できることです。どのビデオを果たしているが、叫ぶ:cv :: VideoWriterが読めないビデオを生成する

[0x28307b0] xcb_xv generic error: no available XVideo adaptor 

(同じコンピュータ上)の任意の他のビデオプレーヤーはビデオを読み込み、再生することができません。 すべてを記録しているように見えますが、出力、フレームのサイズ、ビデオコーデック、fpsなどに関する情報が得られます。エラーはありません。

Output #0, avi, to '01-23-12_15-24-51.avi': 
Stream #0.0: Video: flv, yuv420p, 500x242, q=2-31, 7744 kb/s, 90k tbn, 52tbc 

OpenCVのが唯一のビデオコンテナとしてaviファイルをサポートしたように、私は変更することができる唯一の事はビデオコーデックで、私が試した(FOURCCコード)FLV1、DIVX、DIV3それらのどれも正しく動作しません。

私はこのビデオを別のコンピュータのビデオプレーヤーで再生したいと思います。どうすればそれを動作させることができますか? VideoWriterは正しい選択ですか?

ご提案は大歓迎です。

ありがとうございました。

+0

52fpsでは、OpenCVができることの限界を押し倒しているかもしれません。最初に30fpsで試して、他のビデオプレーヤーがこれにどのように反応するかを見てみましょう。 – karlphillip

+0

OpenCVはFFmpegに依存して、すべての低レベルのビデオ関連の処理を行います。私はかなりffmpegが52 fpsを超えることができると確信しています。とにかく、私が試みた提案に感謝しますが、うまくいきません。 – sciarp

+0

ビデオファイルを作成するときに別のコーデック(FOURCC)を試してください。単純なもの、MPEG2などを選んでください – Sam

答えて

1

あなたはあなたのイメージのためのビデオソースがある場合、出力のために同じコーデックを使用することが良いでしょう:

int videoType = (int)cap.get(CV_CAP_PROP_FORMAT); 

VideoWriter vout; 
vout.open(videofile + "_out.avi", videoType, 30, imgSize); 

または、あなたは古い、単純FOURCCを試すことができます。 Windows上でのみ実行したい場合は、Microsoft特有です。

関連する問題