Decoding TS received over udpsrc

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Decoding TS received over udpsrc

Arthur Luz
So,

I am trying to decode a TS received over an udpsrc. When using decodebin,
I'm able to do so, but i wish to create the entire pipeline, declaring the
decoders myself. I am pretty sure I am missing something, but I can't figure
out what element I'm missing.

*The following pipeline does decode and play the TS correctly:*
    $ gst-launch-1.0 udpsrc port=7000 do-timestamp=true ! decodebin name=d !
queue ! videoconvert ! videorate ! video/x-raw,framerate=30/1 ! glimagesink
d. ! queue ! audioconvert ! pulsesink

*On the other hand, the pipeline below does not work at all:*
    $ gst-launch-1.0 udpsrc port=7000 do-timestamp=true ! tsdemux name=d !
h264parse ! avdec_h264 ! videoconvert ! videorate !
video/x-raw,framerate=30/1 ! autovideosink d. !  aacparse ! avdec_aac !
audioconvert ! autoaudiosink

*As a result of the latter pipeline, I get a frozen image, no audio and the
following messages:*

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
WARNING: from element /GstPipeline:pipeline0/GstTSDemux:d: Delayed linking
failed.
Additional debug info:
./grammar.y(506): gst_parse_no_more_pads ():
/GstPipeline:pipeline0/GstTSDemux:d:
failed delayed linking some pad of GstTSDemux named d to some pad of
GstAacParse named aacparse0
Redistribute latency...
Redistribute latency...
-------
And it stays that way until I cancel the execution.

*I am supposedly working with the correct parsers, as we can see with
gst-discoverer-1.0:*
$ gst-discoverer-1.0 udp://192.168.1.109:7000
Analyzing udp://192.168.1.109:7000
Done discovering udp://192.168.1.109:7000

Topology:
  container: MPEG-2 Transport Stream
    audio: MPEG-4 AAC
    audio: MPEG-4 AAC
    audio: MPEG-4 AAC
    audio: MPEG-4 AAC
    video: H.264

Properties:
  Duration: 99:99:99.999999999
  Seekable: no
  Tags:
      audio codec: MPEG-4 AAC
      bitrate: 484875
      minimum bitrate: 257625
      maximum bitrate: 257625
      video codec: H.264

-------------------------------

Thanks,

Arthur




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding TS received over udpsrc

Arjen Veenhuizen
You are missing the rtp depayloader:





--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding TS received over udpsrc

Arthur Luz
Thank you for the reply!

As you've suggested, I have tried with rtp depay. It does not open any
window to display the image and the audio doesn't work as well, but it does
not give me any errors. When I run gst-launch with the verbose option, it
does give me some messages, but I don't really know what they mean.

*Here is the pipeline I've created:*
 $ gst-launch-1.0 udpsrc port=7000
"caps=application/x-rtp,media=(string)video,clock-rate=(int)90000" ! rtpbin
! rtpmp2tdepay ! tsdemux emit-stats=true name=demux ! queue ! h264parse !
avdec_h264 ! autovideosink  demux. ! queue ! aacparse ! avdec_aac !
autoaudiosink -v

*Here is the output:*

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
"application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_sink_0.GstProxyPad:proxypad2:
caps = "application/x-rtp\,\ media\=\(string\)video\,\
clock-rate\=\(int\)90000"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0.GstPad:recv_rtp_src:
caps = "application/x-rtp\,\ media\=\(string\)video\,\
clock-rate\=\(int\)90000"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:sink:
caps = "application/x-rtp\,\ media\=\(string\)video\,\
clock-rate\=\(int\)90000"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink:
caps = "application/x-rtp\,\ media\=\(string\)video\,\
clock-rate\=\(int\)90000"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_sink_0: caps =
"application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000"
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: stats =
"application/x-rtp-session-stats\,\ rtx-drop-count\=\(uint\)0\,\
sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\
source-stats\=\(GValueArray\)NULL\,\ rtx-count\=\(uint\)0\;"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: stats =
"application/x-rtp-session-stats\,\ rtx-drop-count\=\(uint\)0\,\
sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\
source-stats\=\(GValueArray\)NULL\,\ rtx-count\=\(uint\)0\;"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: stats =
"application/x-rtp-session-stats\,\ rtx-drop-count\=\(uint\)0\,\
sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\
source-stats\=\(GValueArray\)NULL\,\ rtx-count\=\(uint\)0\;"
/GstPipeline:pipeline0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: stats =
"application/x-rtp-session-stats\,\ rtx-drop-count\=\(uint\)0\,\
sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\
source-stats\=\(GValueArray\)NULL\,\ rtx-count\=\(uint\)0\;"
------

It keeps sending that message every couple of seconds until I cancel the
execution.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding TS received over udpsrc

Arthur Luz
Sorry for double posting, but I've still not managed to get a pipeline to
work, does anyone else have an idea of why it is not working?



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding TS received over udpsrc

hilndr44
When I was trying to replace decodebin with the equivalent sub-components to
transcode a .ts file, I had to get very specific by placing caps between
queue and h264parse, and also between h264parse and avdec_h264.
Your source, of course, will be different from mine, but these are the caps
I added :
...
  ! queue \
  !
video/x-h264,stream-format=byte-stream,alignment=nal,interlace-mode=interleaved
\
  ! h264parse \
  ! video/x-h264,format=byte-stream,alignment=au,width=1920,framerate=30/1 \
  ! avdec_h264 \
  ! nvvidconv \
...




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel