14

LibVLCを使用していて、メモリ内のビデオピクセルをレンダリングしたいので、ウィンドウにビデオを描画せずにフレームのスナップショットを撮ることができます(デフォルトのように)。

私が正しく理解していれば、これはlibvlc_video_set_callbacksとlibvlc_video_set_format_callbacksを呼び出すことで実現できます。最初の関数では、タイプ libvlc_video_lock_cbのコールバックを指定する必要があります。このコールバックでは、3つの平面のいずれかを初期化する必要があります。これは、ピクセルが描画されるバッファーであると理解しています。

私の問題は、ピクセルごとに使用されているバイト数、および初期化する必要のあるプレーンの数がビデオクロマに依存することです。この彩度の4文字の識別子を取得する方法は知っていますが、これらの特定のプロパティを取得する方法がわかりません。その情報がないと、割り当てる必要のあるバッファのサイズと、プレーンの数がわかりません。

誰かがこれを行う方法を知っていますか?それとも私は何かを間違って理解していますか?

4

2 に答える 2

6

お気づきのとおり、ピクセルあたりのバイト数とプレーンの数はコーデックに依存します。したがって、1つのオプションは、現在のオプション(GREY、I240、RV16、RV15、RV24、RV32、YUY2、YUYV、UYVY、I41N、I422、I420、I411、I410、MJPG)の値をコードにハードコーディングすることです。

コード/フォーマットの詳細については、 http://www.fourcc.org/にアクセスしてください。

VLCプロジェクトのvlc_fourcc.hfourcc.cもご覧ください。具体的には関数を参照してくださいvlc_fourcc_GetChromaDescription

于 2012-10-18T13:05:50.927 に答える
0

コールバック(タイプののsetup2番目のパラメーター)を使用すると、ビデオ形式を読み取ったり、オプションで変更したりできます。libvlc_video_set_format_callbacks()libvlc_video_format_cb

このコールバックが理解できない形式を取得した場合、それを認識している形式に変更することができます。

于 2012-10-17T21:16:38.840 に答える