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 で正常にテストされました。