Hello and hi to all,
I am fighting with latest 1.8 gstreamer tree to have a pipe to get RTSP H264 stream and put it into a filesink. All works well when i compile 1.8 branch using dynamic linking (.so modules). But as i need to move it further and crosscompile it to ARM board - i need it to compile as a static executable. I studied this group, compiled gstreamer with --enable-static and ---disable-registry and plugins trees with --enable-static-plugins. Then i created a small piece of code to test with: pipeline = gst_parse_launch ("rtspsrc location=rtsp://XXXXX/ protocols=GST_RTSP_LOWER_TRANS_TCP ! rtph264depay ! fakesink", NULL); and ran it. And voila - it works well when all is compiled as dynamic modules. In static mode i added: GST_PLUGIN_STATIC_DECLARE(rtsp); GST_PLUGIN_STATIC_DECLARE(rtp); GST_PLUGIN_STATIC_DECLARE(coreelements); GST_PLUGIN_STATIC_DECLARE(videoparsersbad); static void registerGstStaticPlugins() { GST_PLUGIN_STATIC_REGISTER(rtsp); GST_PLUGIN_STATIC_REGISTER(rtp); GST_PLUGIN_STATIC_REGISTER(coreelements); GST_PLUGIN_STATIC_REGISTER(videoparsersbad); } and linked it against corresponding .a files: -lgstreamer-1.0 \ -l:/usr/local/lib/gstreamer-1.0/libgstrtsp.a \ -l:/usr/local/lib/libgstrtsp-1.0.a \ -l:/usr/local/lib/gstreamer-1.0/libgstrtp.a \ -l:/usr/local/lib/libgstsdp-1.0.a \ -l:/usr/local/lib/libgio-2.0.a \ -l:/usr/local/lib/libgstrtp-1.0.a \ -l:/usr/local/lib/libgstnet-1.0.a \ -l:/usr/local/lib/gstreamer-1.0/libgstcoreelements.a \ -l:/usr/local/lib/libgstbase-1.0.a \ -l:/usr/local/lib/libgstcodecparsers-1.0.a \ -l:/usr/local/lib/gstreamer-1.0/libgstvideoparsersbad.a \ -l:/usr/local/lib/libgstvideo-1.0.a \ -l:/usr/local/lib/libgstcodecparsers-1.0.a \ -l:/usr/local/lib/libgstbase-1.0.a \ -l:/usr/local/lib/gstreamer-1.0/libgstvideoparsersbad.a \ -l:/usr/local/lib/libgstpbutils-1.0.a \ -l:/usr/local/lib/libgsttag-1.0.a \ -l:/usr/local/lib/libgstvideo-1.0.a \ -l:/usr/local/lib/libgstaudio-1.0.a \ Compiled well. But after static compile of the same code (just adding STATIC DECLARE and STATIC_REGISTER differs) - it wont work. Wierd things happens. First is that if i switch RTSP source into UDP transport mode - binary will fail with "cannot allocate udp port"'. Switich to TCP mode will move forward but stuck soon at: (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'on-npt-stop' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtp-decoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtcp-decoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtcp-encoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtp-decoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtcp-decoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtcp-encoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtp-decoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtcp-decoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:2462: signal 'request-rtcp-encoder' is invalid for instance '0x96af800' of type 'GstRTPDec' (gst:4638): GLib-GObject-WARNING **: gsignal.c:3408: signal name 'reset-sync' is invalid for instance '0x96af800' of type 'GstRTPDec' ERROR from element rtph264depay0: No RTP format was negotiated. Debugging info: gstrtpbasedepayload.c(450): gst_rtp_base_depayload_chain (): /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: Input buffers need to have RTP caps set on them. This is usually achieved by setting the 'caps' property of the upstream source element (often udpsrc or appsrc), or by putting a capsfilter element before the depayloader and setting the 'caps' property on that. Also see http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/rtp/README No matter what i do, i cannot pass it further. I tried also 1.4 branch just to check - same happens. Any clues? As i said - if I recompile Gstreamer with dynami plugins - same code works well. Marcin _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel marcin_wozniak.vcf (300 bytes) Download Attachment |
On Fr, 2016-06-24 at 17:32 +0200, Marcin Woźniak wrote:
> Hello and hi to all, > I am fighting with latest 1.8 gstreamer tree to have a pipe to get > RTSP > H264 stream and put it into a filesink. > All works well when i compile 1.8 branch using dynamic linking (.so > modules). But as i need to move it further and crosscompile it to > ARM > board - i need it to compile as a static executable. > I studied this group, compiled gstreamer with --enable-static and > ---disable-registry and plugins trees with --enable-static-plugins. > Then i created a small piece of code to test with: > pipeline = gst_parse_launch ("rtspsrc location=rtsp://XXXXX/ > protocols=GST_RTSP_LOWER_TRANS_TCP ! rtph264depay ! fakesink", NULL); > and ran it. > And voila - it works well when all is compiled as dynamic modules. > In static mode i added: > > GST_PLUGIN_STATIC_DECLARE(rtsp); > GST_PLUGIN_STATIC_DECLARE(rtp); > GST_PLUGIN_STATIC_DECLARE(coreelements); > GST_PLUGIN_STATIC_DECLARE(videoparsersbad); > > static void > registerGstStaticPlugins() > { > GST_PLUGIN_STATIC_REGISTER(rtsp); > GST_PLUGIN_STATIC_REGISTER(rtp); > GST_PLUGIN_STATIC_REGISTER(coreelements); > GST_PLUGIN_STATIC_REGISTER(videoparsersbad); > } udp and app are missing here, probably more, depending on how your real, non-testing pipeline looks like. -- Sebastian Dröge, Centricular Ltd · http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (968 bytes) Download Attachment |
Hello,
Yes, that's true. Gstreamer didnt show in error log that needs additional plugins. Addig udp and rtpmanager works. Problem is a very low performance on ARM board. Marcin W dniu 27.06.2016 o 09:34, Sebastian Dröge pisze: On Fr, 2016-06-24 at 17:32 +0200, Marcin Woźniak wrote:Hello and hi to all, I am fighting with latest 1.8 gstreamer tree to have a pipe to get RTSP H264 stream and put it into a filesink. All works well when i compile 1.8 branch using dynamic linking (.so modules). But as i need to move it further and crosscompile it to ARM board - i need it to compile as a static executable. I studied this group, compiled gstreamer with --enable-static and ---disable-registry and plugins trees with --enable-static-plugins. Then i created a small piece of code to test with: pipeline = gst_parse_launch ("rtspsrc location=rtsp://XXXXX/ protocols=GST_RTSP_LOWER_TRANS_TCP ! rtph264depay ! fakesink", NULL); and ran it. And voila - it works well when all is compiled as dynamic modules. In static mode i added: GST_PLUGIN_STATIC_DECLARE(rtsp); GST_PLUGIN_STATIC_DECLARE(rtp); GST_PLUGIN_STATIC_DECLARE(coreelements); GST_PLUGIN_STATIC_DECLARE(videoparsersbad); static void registerGstStaticPlugins() { GST_PLUGIN_STATIC_REGISTER(rtsp); GST_PLUGIN_STATIC_REGISTER(rtp); GST_PLUGIN_STATIC_REGISTER(coreelements); GST_PLUGIN_STATIC_REGISTER(videoparsersbad); }You need a lot of other plugins for this to work. At least rtpmanager, udp and app are missing here, probably more, depending on how your real, non-testing pipeline looks like. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel marcin_wozniak.vcf (300 bytes) Download Attachment |
On Mo, 2016-06-27 at 09:47 +0200, Marcin Woźniak wrote:
> Hello, > Yes, that's true. Gstreamer didnt show in error log that needs > additional plugins. Addig udp and rtpmanager works. It should appear in the debug logs though, and in theory rtspsrc should report that as the actual error. Can you file a bug about improving the error messages here? > Problem is a very low performance on ARM board. How is that related to static/dynamic linking or the missing plugins? What do you exactly mean with low performance? -- Sebastian Dröge, Centricular Ltd · http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (968 bytes) Download Attachment |
Sebastian - this was just an informatin
that i compiled with your help and it works. Now i need to check a
profile a pipeline, because pipe with rtsp/depay/rtmpsink uses
100% ARM cpu on 1 Mbit stream.
Marcin W dniu 27.06.2016 o 10:39, Sebastian Dröge pisze: On Mo, 2016-06-27 at 09:47 +0200, Marcin Woźniak wrote:Hello, Yes, that's true. Gstreamer didnt show in error log that needs additional plugins. Addig udp and rtpmanager works.It should appear in the debug logs though, and in theory rtspsrc should report that as the actual error. Can you file a bug about improving the error messages here?Problem is a very low performance on ARM board.How is that related to static/dynamic linking or the missing plugins? What do you exactly mean with low performance? _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel marcin_wozniak.vcf (300 bytes) Download Attachment |
Free forum by Nabble | Edit this page |