qtdemux を使用して gstreamer のオーディオ要素とビデオ要素を追加する方法

qtdemux を使用して gstreamer のオーディオ要素とビデオ要素を追加する方法

gstreamer を使用して YouTube ビデオをストリーミングしたいので、コマンド ラインで次のコマンドを実行しました。

gst-launch-0.10 souphttpsrc location=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA) ! typefind ! qtdemux name=demux demux.audio_00 ! multiqueue ! aacparse ! faad ! audioconvert ! pulsesink demux.video_00 ! multiqueue ! h264parse ! video/x-h264 ! ffdec_h264 ! videoscale ! video/x-raw-yuv,width=1024,height=768 ! sdlvideosink

その後、ビデオやオーディオが再生されないウィンドウが開きます。コマンド ラインに次の出力が表示されました。

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

そこで、オーディオ要素のみで次のコマンドを試しました。

gst-launch-0.10 souphttpsrc location=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA) ! typefind ! qtdemux name=demux demux.audio_00 ! multiqueue ! aacparse ! faad ! audioconvert ! pulsesink 

大丈夫です。オーディオ出力を聞くことができます。

同様に、ビデオ要素のみで次のコマンドを実行した場合:

gst-launch-0.10 souphttpsrc location=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA) ! typefind ! qtdemux name=demux demux.video_00 ! multiqueue ! h264parse ! video/x-h264 ! ffdec_h264 ! videoscale ! video/x-raw-yuv,width=1024,height=768 ! sdlvideosink

音声なしでビデオを再生できます。

どこが間違っていたのか教えてください...

答え1

同じことを次のように実現できますplaybin2:

gst-launch-0.10 playbin2 uri=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA)

参考までに、これは playbin2 によって作成されたパイプラインです (フルサイズを表示するには、ブラウザから「画像の表示」を使用します)。

ここに画像の説明を入力してください

ビデオ ストリームを 1024x768 でレンダリングする必要がある場合は、代わりに次のパイプラインを試してください。

gst-launch-0.10 uridecodebin name=dec uri=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA)  ! queue ! autoaudiosink dec. ! queue  ! videoscale ! video/x-raw-yuv,width=1024,height=768 ! autovideosink

両方とも 14.04 で正常にテストされました。

関連情報