我想使用 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 进行。