如何使用 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 进行。

相关内容