Problem with rtspclientsink when using v4l2h264enc on Dragonboard 410c

Nicolas Dufresne nicolas at ndufresne.ca
Thu Mar 15 20:29:38 UTC 2018


Le jeudi 15 mars 2018 à 12:07 -0700, RobGries a écrit :
> When using the following pipeline on a dragonboard 410c using the gstv4l2enc
> I seem not to be able to stream up to wowza:
> gst-launch-1.0 -v v4l2src device=/dev/video3 !
> video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! v4l2h264enc
> extra-controls="controls,h264_profile=4,video_bitrate=2000000;" ! h264parse

You should use caps filter to negotiate profiles, I cannot guaranty
setting the profile this way will work. An example:

  v4l2h264enc ! video/x-h264,profile=main,level=4 ! ...

> ! rtspclientsink
> location=rtsp://51c1b3.entrypoint.cloud.wowza.com/app-acb4:1935
> 
> This is the error that I get:
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Progress: (open) Opening Stream
> Progress: (connect) Connecting to
> rtsp://51c1b3.entrypoint.cloud.wowza.com/app-acb4:1935
> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw,
> format=(string)NV12, width=(int)1280, height=(int)720,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, pixel-aspect-ratio=(fraction)1/1
> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
> video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, pixel-aspect-ratio=(fraction)1/1
> /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0.GstPad:src: caps =
> video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,
> profile=(string)high, level=(string)1, width=(int)1280, height=(int)720,
> pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1,
> interlace-mode=(string)progressive, colorimetry=(string)1:4:7:1
> /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps =
> video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,
> profile=(string)high, level=(string)1, width=(int)1280, height=(int)720,
> pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1,
> interlace-mode=(string)progressive, colorimetry=(string)1:4:7:1,
> parsed=(boolean)true
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0.GstGhostPad:sink_0.GstProxyPad:proxypad0:
> caps = video/x-h264, stream-format=(string)byte-stream,
> alignment=(string)au, profile=(string)high, level=(string)1,
> width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, parsed=(boolean)true
> Progress: (open) Retrieving server options
> Progress: (open) Opened Stream
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0/GstBin:rtspbin/GstRtpBin:rtpbin0:
> latency = 2000
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0/GstBin:rtspbin/GstRtpBin:rtpbin0:
> ntp-time-source = NTP time based on realtime clock
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0/GstBin:rtspbin/GstRtpH264Pay:rtph264pay0:
> pt = 96
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0/GstBin:rtspbin.GstGhostPad:ghostpad0.GstProxyPad:proxypad1:
> caps = video/x-h264, stream-format=(string)byte-stream,
> alignment=(string)au, profile=(string)high, level=(string)1,
> width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, parsed=(boolean)true
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0/GstBin:rtspbin/GstRtpH264Pay:rtph264pay0.GstPad:sink:
> caps = video/x-h264, stream-format=(string)byte-stream,
> alignment=(string)au, profile=(string)high, level=(string)1,
> width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, parsed=(boolean)true
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0/GstBin:rtspbin.GstGhostPad:ghostpad0:
> caps = video/x-h264, stream-format=(string)byte-stream,
> alignment=(string)au, profile=(string)high, level=(string)1,
> width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, parsed=(boolean)true
> /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0.GstGhostPad:sink_0:
> caps = video/x-h264, stream-format=(string)byte-stream,
> alignment=(string)au, profile=(string)high, level=(string)1,
> width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, parsed=(boolean)true
> /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps =
> video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,
> profile=(string)high, level=(string)1, width=(int)1280, height=(int)720,
> pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1,
> interlace-mode=(string)progressive, colorimetry=(string)1:4:7:1
> Redistribute latency...
> /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0.GstPad:sink: caps =
> video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, pixel-aspect-ratio=(fraction)1/1
> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
> video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720,
> framerate=(fraction)30/1, interlace-mode=(string)progressive,
> colorimetry=(string)1:4:7:1, pixel-aspect-ratio=(fraction)1/1
> Execution ended after 0:00:00.258690184
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> Freeing pipeline ...
> 
> (gst-launch-1.0:5619): GStreamer-CRITICAL **: gst_structure_set: assertion
> 'IS_MUTABLE (structure) || field == NULL' failed

Can you file a bug about this one please, bugs.gnome.org.

> ERROR: from element /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0: Could
> not get/set settings from/on resource.
> Additional debug info:
> ../../../gst-plugins-good-1.12.2/sys/v4l2/gstv4l2object.c(3150):
> gst_v4l2_object_set_format_full ():
> /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0:
> Device is in streaming mode

This one is familiar, but I thought it was fixed in 4.15+ (or latest
4.9 from linaro). Which kernel are you running ?

> 
> The weird thing is that I can utilize the test code from gst-rtsp-server
> with the following pipeline to stream as an RTSP server, but it seems that
> pushing a stream has issues:
> v4l2h264enc
> extra-controls=\"controls,h264_level=15,h264_profile=4,video_bitrate=800000;\"
> ! h264parse !  rtph264pay name=pay0 pt=127 config-interval=15 pulsesrc
> device=\"alsa_input.platform-7702000.sound.HiFi__plughw_0_1__source\" !
> audio/x-raw,rate=8000  ! audioconvert ! avenc_aac ! rtpmp4apay name=pay1
> pt=96"
> 
> Test Code Located here:
> https://github.com/GStreamer/gst-rtsp-server/blob/master/examples/test-video.c

That's weird indeed. Best would be for me to reproduce these two
issues. If you could file a bug, it would be extra nice, as this way I
won't forget.

> 
> 
> 
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20180315/b79656bc/attachment.sig>


More information about the gstreamer-devel mailing list