我想使用 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 測試正常。