Dear GStreamer developers, I'm trying to re-stream a Motion-JPEG stream via the GStreamer RTSP server (i.e. RFC2435 extension to RTSP) but am having trouble with my pipeline. The video source is an "i-Spy Tank" by HappyCow. See: https://www.youtube.com/watch?v=p-_fnMRzcKE There's a blog on accessing this tank's video, turret and track controls here: https://devblog.kogan.com/blog/hacking-the-wifi-spy-tank Think of it as a simple WiFi connected web camera where the device presents as an open wireless access point. The Motion JPEG video stream is at: http://10.10.1.1:8196/ (not port 9876 as the devblog confusingly says!). VLC tells me that the stream is: Codec: Motion JPEG (MJPG) Resolution: 640x480 Display resolution: 640x480 Decoded format: Planar 4:2:2 YUV full scale What's working: I've successfully saved the individual JPEG frames with the following pipeline: gst-launch-1.0 -e souphttpsrc location=http://10.10.1.1:8196/ ! multipartdemux ! image/jpeg,width=640,height=480 ! multifilesink location=frame%05d.jpeg What's not working: I'm unable to re-stream using GStreamer RTSP so far... I've tried pipelines: "souphttpsrc location=http://10.10.1.1:8196/ ! multipartdemux ! rtpjpegpay" and: "souphttpsrc location=http://10.10.1.1:8196/ do-timestamp=true ! multipartdemux ! image/jpeg,width=640,height=480 ! rtpjpegpay" But both of these pipelines fail with error: "FIXME rtspmedia rtsp-media.c:3835:gst_rtsp_media_suspend: suspend for dynamic pipelines needs fixing" (When run with GST_DEBUG="*:3"). My understanding of this error is that it's due to a capabilities mismatch between elements. Is this the case? I've seen some people use "avdec_mjpeg" and then re-encode but I'd rather not go to that extreme... If it's incompatible or missing capabilities, how can I artificially provide these caps without transcoding? Matt Thyer _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
I've made some good progress. Apparently GStreamer RTSP server needed the RTP payload to be named "pay0". The "rtpjpegpay" element defaulted to a name of "rtpjpegpay0". I've also set the payload type to 26 ("pt=26") as I think it should be. I then needed to insert a capsfilter of "image/jpeg,width=640,height=480" after the "multipartdemux" element. This got me an initial image and an endless stream of "FIXME" messages (at GST_DEBUG="*:3") but video wasn't animated.... The final fix was to use the "do-timestamp=true" and "is_live=true" parameters with the "souphttpsrc" element. I now have a nicely restreamed feed but I still get an endless stream of FIXME and some WARNs (at GST_DEBUG="*:3"). I guess the answer to that is not to look at the debug messages! My final pipeline is: "souphttpsrc location=http://10.10.1.1:8196/ do-timestamp=true is_live=true ! multipartdemux ! image/jpeg,width=640,height=480 ! rtpjpegpay name=pay0 pt=26" Does anyone know if I can improve on this? The FIXME and WARNs are: 1 of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0xff Many of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0x00 2 of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0xff 1 of: WARN rtpjpegpay gstrtpjpegpay.c:733:gst_rtp_jpeg_pay_handle_buffer:<pay0> EOI reached before SOS! 2 of: WARN rtspstream rtsp-stream.c:4504:gst_rtsp_stream_seekable:<GstRTSPStream@0x7f9198048330> seeking query failed 2 of: FIXME rtspmedia rtsp-media.c:3833:gst_rtsp_media_suspend: suspend for dynamic pipelines needs fixing 1 of: FIXME rtspclient rtsp-client.c:1646:handle_play_request:<GstRTSPClient@0x1417120> Add support for seek style (null) 3 of: WARN rtspstream rtsp-stream.c:4504:gst_rtsp_stream_seekable:<GstRTSPStream@0x7f9198048330> seeking query failed 1 of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0xff Many of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0x00 1 of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0xff 1 of: WARN rtpjpegpay gstrtpjpegpay.c:733:gst_rtp_jpeg_pay_handle_buffer:<pay0> EOI reached before SOS! 1 of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0xff Many of: FIXME rtpjpegpay gstrtpjpegpay.c:751:gst_rtp_jpeg_pay_handle_buffer:<pay0> unhandled marker 0x00 etc... Thanks in advance On Wed, 6 Mar 2019 at 12:11, Matt Thyer <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |