I have some troubles of rtp transmit of gstreamer. I test the rtp transmit, server and client are all in local host, so my example as below:
server: gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=40000 sync=false client: gst-launch-0.10 -v udpsrc caps=" application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96,ssrc=(uint)237526004,clock-base=(uint)1584170994,seqnum-base=(uint)42626" port=40000 ! rtph264depay ! decodebin ! xvimagesink the client caps is copied from the server's udpsrc caps. But still occur an error, error message as below: ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2550): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: streaming task paused, reason not-negotiated (-4) Execution ended after 623154883 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... I have test the rtp example in the tree of gst-plugin-good/tests/example/rtp, occur the same error. I also have read the document: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/rtp/README#n251, and follow it , still occur the same error. Who can help me? Thanks very much. |
attach the print information:
server: gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=40000 sync=false Setting pipeline to PAUSED ... /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2, width=(int)320, height=(int)240, framerate=(fraction)30/1 Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = video/x-h264, width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)014d4015ffe10017674d4015eca0a0fd8088000003000bb9aca00078b16cb001000468ebecb2, stream-format=(string)avc, alignment=(string)au /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2, width=(int)320, height=(int)240, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01AFeygoP2AiAAAAwALuaygAHixbLA\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)1960011877, clock-base=(uint)3818509597, seqnum-base=(uint)21266 /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:sink: caps = video/x-h264, width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)014d4015ffe10017674d4015eca0a0fd8088000003000bb9aca00078b16cb001000468ebecb2, stream-format=(string)avc, alignment=(string)au /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01AFeygoP2AiAAAAwALuaygAHixbLA\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)1960011877, clock-base=(uint)3818509597, seqnum-base=(uint)21266 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock client: gst-launch-0.10 -v udpsrc caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96,ssrc=(uint)1960011877,clock-base=(uint)3818509597,seqnum-base=(uint)21266" port=40000 ! rtph264depay ! decodebin ! xvimagesink Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264 /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96, ssrc=(uint)1960011877, clock-base=(uint)3818509597, seqnum-base=(uint)21266 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-h264 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = video/x-h264 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-h264 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_h264:ffdec_h2640.GstPad:sink: caps = video/x-h264 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)320, height=(int)240, framerate=(fraction)536870912/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_h264:ffdec_h2640.GstPad:src: caps = video/x-raw-yuv, width=(int)320, height=(int)240, framerate=(fraction)536870912/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2550): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: streaming task paused, reason not-negotiated (-4) Execution ended after 246667089 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_h264:ffdec_h2640.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_h264:ffdec_h2640.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = NULL /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = NULL Setting pipeline to NULL ... Freeing pipeline ... I have test the rtp example in the tree of gst-plugin-good/tests/example/rtp, occur the same error. |
In reply to this post by guodecn
I guess you should use h264parse element between rtph264depay and decodebin in your client pipeline and ffmpegcolorspace element before ximagesink.
On Wed, Nov 10, 2010 at 8:56 AM, guodecn <[hidden email]> wrote:
-- Regards, Sudarshan Bisht ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
I apologise , in fact you are using xvimagesink , I thought it is ximagesink. Then you don't need to use ffmpegcolorspace.
On Wed, Nov 10, 2010 at 7:13 AM, sudarshan bisht <[hidden email]> wrote: I guess you should use h264parse element between rtph264depay and decodebin in your client pipeline and ffmpegcolorspace element before ximagesink. -- Regards, Sudarshan Bisht ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by guodecn
Hi,
On Wed, Nov 10, 2010 at 5:26 AM, guodecn <[hidden email]> wrote:
you don't need to set sync to false here. Btw it shouldn't harm that much.
you must not specify ssrc, clock-base and seqnum-base in your caps. Unless you're playing back something captured with tcpdump, they're likely to change for each streaming session. It's easy to see this through wireshark.
it's reasonable, as the receiving pipeline is expecting EXACTLY the same SSRC, clock-base and seqnum-base. Maybe you can set the verbosity of your pipeline to something like GST_DEBUG=3 to confirm. Regards Execution ended after 623154883 ns. ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Hi,
just one more note: please report your log to pastebin or as a .txt attachment.. the gmail web interface is damn slow for long emails on my eeepc (I know, I should use mutt, mea culpa). Regards
On Wed, Nov 10, 2010 at 9:42 AM, Marco Ballesio <[hidden email]> wrote: Hi, ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by guodecn
Hi,sudarshan bisht, Marco Ballesio,
Thanks for your reply. Follow sudarshan bisht's advice, I have add the h264parse plugin between h264depay and decodebin. Follow Marco Ballesio's advice ,I have delete the udpsink's property sync=false, and delete the redundant caps:ssrc clock-base and sequm-base. As do above, the same error is still exist. server: gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=40000 client: gst-launch-0.10 -v udpsrc caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" port=40000 ! rtph264depay ! h264parse ! decodebin ! xvimagesink attach is the error message.log.txt |
Hi,
On Wed, Nov 10, 2010 at 10:34 AM, guodecn <[hidden email]> wrote:
this is better: gst-launch-0.10 -v udpsrc port=40000 ! "application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! decodebin ! xvimagesink if you have a depayloader, you don't need the parser. However, the issue was the place you've set the "port" property. btw unless you have a light-speed machine you'll see frame drops. In such a case, relaxing the buffers lateness constraints on the xvimagesinksync will help (max-lateness=10000000000). I don't suggest you to set sync=false there if one day you'll want to stream audio as well. Another note: you don't need to use a decodebin in the receiving pipeline. Something like ffdec_h264 will be enough. Regards
------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by guodecn
Hi,Marco Ballesio,
Thanks for your reply very much. >>However, the issue was the place you've set the "port" property. what's your mean? Don't udpsrc need the port property? if don't udpsrc have no port property, we can't receive the data. I have modify the pipeline as below: server: gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=40000 client: gst-launch-0.10 -v udpsrc port=40000 caps= "application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! ffdec_h264 ! xvimagesink But the same error is still exist. Can you modify my pipeline correct, and show me. Thanks. |
Hi,
On Wed, Nov 10, 2010 at 11:30 AM, guodecn <[hidden email]> wrote:
sorry, I didn't notice the "caps=" before the caps ;)
These pipelines are working pretty well, both with the standard ubuntu 10.4 and all the packages aligned with the respective upstream heads. I suggest you to check your syntax and copy/paste efficiency ;) Regards
------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Marco Ballesio,
Very sadly, I use your modfied sample still the same error. I think the syntax is no problem, my os is fedora13 install on vmware workstation. I have no idea.
|
Hi,
mmmhhh, I've the suspect that in your case sending machine != receivning machine. Maybe you've an old version of x264enc in the first one. It appears, in fact, that the sending part is preparing the sprop-paramenter-set (aka codec data) for being transmitted outband. You can try to either add the property: codec_data=(buffer)014d4015ffe10017674d4015eca0a0fd8088000003000bb9aca00078b16cb001000468ebecb2in your receiver udpsrc caps. Alternatively (but less likely to succeed) you can set the following property in rtph264pay to send in-band sps and pps: config-interval=1 (should send in-band sps and pps). If it still does not work, please attach somewher the log you get with GST_DEBUG=3 Regards On Wed, Nov 10, 2010 at 12:03 PM, guodecn <[hidden email]> wrote:
------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by guodecn
hi,I also had a "not-negotiated (-4)" error,the following are my commands:
server: gst-launch -v videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=127.0.0.1 port=5000 client gst-launch -v udpsrc port=5000 caps=" application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1,config=(string)000001b001000001b58913000001000000012000c48d8800f50a041e1463000001b24c61766331642e35312e33382e30, payload=(int)96,ssrc=(guint)3127939974, clock-base=(guint)3486206175, seqnum-base=(guint)28199" ! rtpmp4vdepay ! ffdec_mpeg4 ! ximagesink my operation system Ubuntu is also on the vmware,is this the cause of the problem? |
In reply to this post by Marco Ballesio
Marco Ballesio,
I have follow your two advices, add the codec_data property or set config-interval=1, the error is still same to before. I have set the GST_DEBUG=3, and capture the log, both server and client log are all in the attach file. I will check my machine evirenment about x264enc, also I will continue to debug with the new log. Thank you very much for your fervor. log.txt |
In reply to this post by citywolf
citywolf,
I have not solve the problem, I have some advice for you. First you can run my test example: server: gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=40000 client: gst-launch-0.10 -v udpsrc port=40000 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! ffdec_h264 ! xvimagesink this example can work well on Marco Ballesio's machine. if you can work well too, it show your pipeline has some problem, if not, show your machine environment has some problem, but however, I think there is no problem to virture machine(VMware workstation). Good luck for you.
|
In reply to this post by Marco Ballesio
Marco Ballesio,
Because my x264enc lib dependence "x264-snapshot-20101102-2245", but ffdec_h264 dependence the "gst-ffmpeg-0.10.11", they are from different opensource, maybe not matched ,so I change h264 to h263, but other error occur, my pipeline as below: server: gst-launch videotestsrc ! ffenc_h263p ! rtph263ppay ! udpsink host=127.0.0.1 port=40000 client: gst-launch udpsrc port =40000 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998" ! rtph263pdepay ! ffdec_h263p ! xvimagesink when I set the GST_DEBUG=3, the client show error message as below: 0:00:00.516123278 3298 0xa08b780 ERROR ffmpeg :0:: header damaged 0:00:00.516166011 3298 0xa08b780 WARN ffmpeg gstffmpegdec.c:2259:gst_ffmpegdec_frame:<ffdec_h2630> ffdec_h263: decoding error (len: -1, have_data: 0) I am doubt the ffenc_h263p and ffdec_h263p plugins both from the same plugin lib "gst-ffmpeg-0.10.11", also the rtph263ppay and rtph263pdepay are both from the same plugin lib "gst-plugins-good-0.10.25", they should match, but still occur error. The detailed log message is attached. log_h263_client.txt |
In reply to this post by guodecn
Hi,
On Thu, Nov 11, 2010 at 4:19 AM, guodecn <[hidden email]> wrote:
From the log, it feels like the udpsrc is emitting packets which are not h264. My bat-senses say that you might have more than one thing connected to port 40000 on your system. I don't remember if I've already asked you to do so, but could you get a tcpdump from the receiving side/machine (well, actually it should be the same as the sending one ;) ). You can collect it with: tcpdump -ilo -s0 -w/path/to/tcpdump.cap Thank you very much for your fervor. Mastership requires continuous exercise, and you're giving me a good chance, so it is me who must thank you ;). Regards
------------------------------------------------------------------------------ Centralized Desktop Delivery: Dell and VMware Reference Architecture Simplifying enterprise desktop deployment and management using Dell EqualLogic storage and VMware View: A highly scalable, end-to-end client virtualization framework. Read more! http://p.sf.net/sfu/dell-eql-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by guodecn
hi,guodecn.
i've tried your pipelines, it didn't show any errors.but nothing happened,no video displaying. server: gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=40000 Setting pipeline to PAUSED ... /pipeline0/videotestsrc0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1 Pipeline is PREROLLING ... x264 [info]: using SAR=1/1 x264 [info]: using cpu capabilities: MMX MMXEXT SSE SSE2 SSE3 Cache64 /pipeline0/x264enc0.src: caps = video/x-h264, format=(fourcc)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, codec_data=(buffer)014d4033ffe10017674d403392540a0fd80880000003008000001e478c195001000468ee3c80 /pipeline0/x264enc0.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1 /pipeline0/rtph264pay0.sink: caps = video/x-h264, format=(fourcc)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, codec_data=(buffer)014d4033ffe10017674d403392540a0fd80880000003008000001e478c195001000468ee3c80 client: gst-launch-0.10 -v udpsrc port=40000 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! ffdec_h264 ! ximagesink Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock on the client,i use ximagesink instead of xvimagesink,because it causes mistake when i use xvimagesink. |
In reply to this post by Marco Ballesio
Marco Ballesio,
I don't think there is other thing connect to port 40000, because change to other port number still have the same problem. I'm doubtful of the encode plugin don't match the decode plugin.You can see my h.263 rtp transmit sample and log.
|
In reply to this post by citywolf
citywolf,
Because I still don't sovle the problem, I can't help you to test it,I suggest you modify the client as below: gst-launch-0.10 -v udpsrc port=40000 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! ffdec_h264 ! ffmpegcolorspace ! ximagesink. you can have a test.
|
Free forum by Nabble | Edit this page |