2016-06-28 17 views
1

Gstreamerソースプラグインを作成しました。バッファを作成し、下流の要素に変換してプレビューできます。最近、私はマルチストリームを実装するリクエストを受け取りました。その1つのストリームはプレビューを行い、もう1つのストリームは記録を行います(ファイルシンクを使用しています)。私は前に 'tee'プラグインを調べましたが、同じフォーマット/解像度で複数のストリームしかサポートしていないことが判明しました。 2つのストリームのフォーマット/解像度が異なる場合、、つまり1つのパイプラインに2つのcapsfiltersを使用する場合、どのプラグインを使用する必要がありますか?プラグインがある場合は、プラグインを使用する方法の例をいくつか教えてください。Gstreamerでマルチストリームを実装する

私は期待してパイプラインはこのように書きます:

gst-launch-1.0 mysrc ! (some plugins) name=t ! video/x-raw,format=NV12,width=320,height=240 ! xvimagesink t. ! video/x-raw,format=YUY2,width=640,height=480 ! filesink location=img_file 

答えて

0

は、私はどちらかあなたが2つのSRCパッドを生成し、あなただけのfilesink、正しくvideosinkを接続するプラグインでこれを実装すると思います。..

または、さまざまな解像度を実現するために、teeとvideoscale videoconvert video要素を使用します。このアプローチはもちろん、より多くのリソースを必要とし、最初のアプローチは最適化することができます(ちょうど推測、私はあなたのプラグインについて何も知らない)。

これは、それぞれ異なるサイズの2つのvideosinkの例です。あなたはmysrcから1つの入力があることを認識しなければなりません。それを複製し、ブランチの1つをサイズ変更する必要がありますあなたが必要な場合)..他の方法はありません。あなたが欲しいのは、ティーとビデオスケール/ビデオ/ビデオコンバーターの組み合わせの要素です。そのような要素があるかどうかは分かりませんが、それは非常に有用であるとは確信できません(しかし、おそらくそれは感覚を持っています)..

gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=480 ! tee name=t t. ! queue ! videoscale ! video/x-raw,width=320,height=240 ! videoconvert ! autovideosink t. ! queue ! videoscale ! video/x-raw,width=200,height=200 ! videoconvert ! autovideosink 

おそらく私はあなたの質問を理解できませんでした。

+0

ありがとうございます!パイプラインがうまくいく – caolaoban1234

関連する問題