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에 테스트를 거쳤습니다.

관련 정보