I am trying to establish tools to analyze RTP streams. I have a wireshark packet capture that has RTP video that successfully displayed. In wireshark I decoded the specific UDP as RTP, then set the default H264 RTP payload type properly to analyze the packets has H264. I then selected 'follow conversation' to only select that particular stream. I verified that the resulting wireshark display only contained the entire RTP payload from all of the selected packets, the UDP headers had been removed. To do that I simply compared the isolated stream display to the standard wireshark display for the selected packet and matched where the initial bytes lined up. I then saved that isolated stream to a file that I gave the 'rtp' extension to. I then used a gstreamer based script to read the file, rtp depay, h264 decode and display the stream. But the depay operation failed. Here is my pipeline to process the file:<br>
<br>gst-launch -v filesrc location=$1 ! 'application/x-rtp,media=video,payload=104,clock-rate=90000,encoding-name=H264' \<br> ! queue ! rtph264depay ! ffdec_h264 ! ffmpegcolorspace ! xvimagesink<br><br>Here are the initial log messages from the script. I had debugging for rtph264depay:5<br>
<br>/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)104, clock-rat<br>e=(int)90000, encoding-name=(string)H264<br>/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264<br>
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int<br>)104, clock-rate=(int)90000, encoding-name=(string)H264<br>WARNING: from element /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: Could not decode stream.<br>
Additional debug info:<br>gstbasertpdepayload.c(368): gst_base_rtp_depayload_chain (): /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:<br>Received invalid RTP payload, dropping<br>WARNING: from element /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: Could not decode stream.<br>
<br>I can do this process for MP2T packets. I know that RTP is not a valid 'container' for this but I would think that by isolating the RTP portion of each packet, writing them to a binary file, reading the packets and passing them to the RTP H264 depayloader should address those problems.<br>
<br>In attempting to isolate problems, I also captured video from a webcam, H264 encoded it, ran it through the rtph264payloader and wrote it to a file. This same script fails the same way with that file.<br><br>Can anyone suggest where I have goofed? BTW - ffplay also fails.<br>
<br>Thank you,<br>Chuck Crisler<br>