Quero transmitir um vídeo do YouTube usando o gstreamer. Então dei o seguinte comando na linha de comando:
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
Depois disso, uma janela é aberta sem reprodução de vídeo ou áudio. Obtive a seguinte saída na linha de comando:
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Então tentei o seguinte comando apenas com elementos de áudio:
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
Tudo bem, consigo ouvir a saída de áudio.
Da mesma forma, quando dei o seguinte comando apenas com elementos de vídeo:
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
Consigo ver o vídeo sendo reproduzido sem áudio.
Por favor me ajude onde errei...
Responder1
Você pode conseguir a mesma coisa com playbin2
:
gst-launch-0.10 playbin2 uri=$(/usr/local/bin/youtube-dl -g -f 18 i4jTHhXuKLA)
Para obter informações, este é o pipeline criado por playbin2 (use "Exibir imagem" do seu navegador para obtê-lo em tamanho real):
Se você precisar renderizar o stream de vídeo em 1024x768, tente o seguinte 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
Ambos testaram OK em 14.04.