AW: Dynamically record a h264 stream

Sebastian Dröge sebastian at centricular.com
Fri Mar 25 08:08:01 UTC 2016


On Mi, 2016-03-23 at 15:37 +0100, Davide Tuccilli wrote:
> 
> On 23/03/2016 09:22, Sebastian Dröge wrote:
> > 
> > On Di, 2016-03-22 at 20:58 +0100, Davide Tuccilli wrote:
> > > 
> > >   
> > > 
> > > Any reason the current caps might result null for the muxer
> > > video_0/h264parse src pads? For what I understand, that's the problem
> > > right? I should have stream-format=avc there. I'm not sure how to
> > > debug this.
> > The problem seems to be that for whatever reason h264parse fails to
> > negotiate. It should indeed output AVC in your case, but it fails doing
> > so.
> > 
> > You'll have to debug from the debug logs why exactly h264parse fails.
> > You should also get an error about that, a negotiation error.
> > 
> 
> Seems to me that both in the "bad" log and the "good" log, the h264parse 
> and mux are linked correctly, this is taken from the bad log:
> 
> 
> 0:00:02.942548805 20077  0x12b3200 DEBUG   
>             GST_CAPS 
> gstpad.c:2190:gst_pad_link_check_compatible_unlocked: src 
> caps image/jpeg; video/mpeg, mpegversion=(int)4, 
> systemstream=(boolean)false; video/mpeg, mpegversion=(int)2; 
> video/mpegts, systemstream=(boolean)true; video/x-bayer, 
> format=(string){ bggr, gbrg, grbg, rggb }, width=(int)[ 1, 32768 ], 
> height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; 
> video/x-dv, systemstream=(boolean)true; video/x-h263, 
> variant=(string)itu; video/x-h264, stream-format=(string)byte-stream, 
> alignment=(string)au; video/x-pwc1, width=(int)[ 1, 32768 ], 
> height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; 
> video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], 
> framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ 
> RGB15, RGB16, BGR, RGB, BGRx, BGRA, xRGB, ARGB, GRAY8, YVU9, YV12, YUY2, 
> UYVY, Y42B, Y41B, NV12_64Z32, NV24, YUV9, I420, YVYU, NV61, NV16, NV21, 
> NV12 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], 
> framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-sonix, width=(int)[ 
> 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 
> 2147483647/1 ]; video/x-vp8
> 0:00:02.942828908 20077  0x12b3200 DEBUG   
>             GST_CAPS 
> gstpad.c:2192:gst_pad_link_check_compatible_unlocked: 
> sink caps video/x-h264, width=(int)720, height=(int)576, 
> framerate=(fraction)25/1
> 0:00:02.942910887 20077  0x12b3200 DEBUG   
>             GST_CAPS 
> gstpad.c:2210:gst_pad_link_check_compatible_unlocked: caps are 
> compatible
> 0:00:02.942963022 20077  0x12b3200 INFO    
>             GST_PADS gstpad.c:2496:gst_pad_link_full: 
> linked recsource:src and capsfilter0:sink, successful
> 
> 
> 0:00:04.479278218 18988  0x14c3200 DEBUG   
>             GST_CAPS 
> gstpad.c:2190:gst_pad_link_check_compatible_unlocked: 
> src caps video/x-h264, stream-format=(string)avc, alignment=(string)au, 
> parsed=(boolean)true
> 0:00:04.479323217 18988  0x14c3200 DEBUG   
>             GST_CAPS 
> gstpad.c:2192:gst_pad_link_check_compatible_unlocked: 
> sink caps video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, 
> width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]; 
> video/x-divx, divxversion=(int)5, width=(int)[ 16, 2147483647 ], 
> height=(int)[ 16, 2147483647 ]; video/x-h264, stream-format=(string)avc, 
> alignment=(string)au, width=(int)[ 16, 2147483647 ], height=(int)[ 16, 
> 2147483647 ]; video/x-mp4-part, width=(int)[ 16, 2147483647 ], 
> height=(int)[ 16, 2147483647 ]
> 0:00:04.479417019 18988  0x14c3200 DEBUG   
>             GST_CAPS 
> gstpad.c:2210:gst_pad_link_check_compatible_unlocked: caps are 
> compatible
> 0:00:04.479457696 18988  0x14c3200 INFO    
>             GST_PADS gstpad.c:2496:gst_pad_link_full: 
> linked capsfilter1:src and mp4mux0:video_0, successful
> 
> 
> Anything else I might want to look for in the log, or any reason I can 
> get null when calling gst_pad_get_sticky_event?

Can you provide the full log, and also attach it to the mail instead of
pasting it? This one doesn't contain the actual error but only some
setup that happens before and all succeeds.

gst_pad_get_current_caps() will return NULL if no caps are negotiated
on the pad. That is, no caps event was received and accepted.

-- 
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 949 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160325/65c37c28/attachment-0001.sig>


More information about the gstreamer-devel mailing list