Ich möchte ein YouTube-Video mit Gstreamer streamen. Daher habe ich den folgenden Befehl in die Befehlszeile eingegeben:
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
Danach wird ein Fenster geöffnet, in dem weder Video noch Audio abgespielt wird. Ich habe die folgende Ausgabe in der Befehlszeile erhalten:
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Daher habe ich den folgenden Befehl nur mit Audioelementen ausprobiert:
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
Es ist in Ordnung, ich kann die Audioausgabe hören.
Ähnlich verhält es sich, wenn ich den folgenden Befehl nur mit Videoelementen eingebe:
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
Ich kann die Videowiedergabe ohne Ton sehen.
Bitte helfen Sie mir, wo ich einen Fehler gemacht habe ...
Antwort1
Dasselbe erreichen Sie mit playbin2
:
gst-launch-0.10 playbin2 uri=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA)
Zur Information: Dies ist die von playbin2 erstellte Pipeline (verwenden Sie „Bild anzeigen“ in Ihrem Browser, um es in voller Größe anzuzeigen):
Wenn Sie den Videostream mit 1024 x 768 rendern müssen, versuchen Sie stattdessen die folgende Pipeline:
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
Beide Tests am 14.04. waren OK.