如何使用 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 測試正常。

相關內容