Regression? video-surveilance camera feed, h264 keyframes not identified, splitmuxsink doesn't split due to infinite GOP
Submitted by cJ-..@..oub.eu
Link to original bug (#792336)
Description
This was working prior to a gstreamer upgrade (prior: 1.8.3 or 1.10.4, current: 1.12.3).
Running the pipeline:
rtspsrc ! rtph264depay ! h264parse ! identity silent=false ! splitmuxsink name=sink max-size-time=10000000000 location=video%03d.mp4
Now, splitmuxsink doesn't split.
Using ffmpeg to capture the RTSP feed to mp4 without transcoding, then processing the mp4 with gstreamer doesn't cause issues.
Current:
/GstPipeline:pipeline0/GstSplitMuxSink:sink/GstQueue:queue0: max-size-buffers = 252
/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (189112 bytes, dts: none, pts: 0:00:10.091041225, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7f87683342b0
0:00:10.209103770 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1368:handle_mq_input:queue0:sink Fired probe type 0x1040
0:00:10.209162465 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1379:handle_mq_input:queue0:sink Event tag event: 0x7f874c018650, time 99:99:99.999999999, seq-num 711, GstTagList-stream, taglist=(taglist)"taglist,\ video-codec=(string)"H.264\\ \(Baseline\\ Profile\)",\ minimum-bitrate=(uint)6787600,\ maximum-bitrate=(uint)37822400,\ bitrate=(uint)8482734;";
0:00:10.209255141 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1368:handle_mq_input:queue0:sink Fired probe type 0x1010
0:00:10.209285276 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1468:handle_mq_input:queue0:sink Buffer TS is 0:00:10.000000000
0:00:10.209321125 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1482:handle_mq_input:queue0:sink Buffer running TS is +0:00:10.000000000
0:00:10.209354220 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1496:handle_mq_input:queue0:sink in running time now +0:00:10.091041225
0:00:10.209386101 31069 0x7f876805e450 DEBUG splitmuxsink gstsplitmuxsink.c:1523:handle_mq_input:queue0:sink Buf TS +0:00:10.091041225 total GOP bytes 10456720
0:00:10.209421337 31069 0x7f876805e450 LOG splitmuxsink gstsplitmuxsink.c:1619:handle_mq_input:queue0:sink Returning to queue buffer buffer: 0x7f87682a6e40, pts 99:99:99.999999999, dts 0:00:10.000000000, dur 0:00:00.040000000, size 189112, offset 10456720, offset_end none, flags 0x0 run ts +0:00:10.091041225
0:00:10.209476947 31069 0x7f876805e450 DEBUG splitmuxsink gstsplitmuxsink.c:1680:handle_q_overrun:<queue0>
Queue reported overrun with 0 keyframes and 0 cmds enqueued
0:00:10.209515002 31069 0x7f876805e450 DEBUG splitmuxsink gstsplitmuxsink.c:1708:handle_q_overrun:<queue0>
Queue overflowed and needs enlarging. Growing to 253 buffers
/GstPipeline:pipeline0/GstSplitMuxSink:sink/GstQueue:queue0: max-size-buffers = 253
Prior:
/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (188750 bytes, dts: none, pts: 0:00:20.120181650, duration: none, offset: -1, offset_end: -1, flags: 00000000 ) 0x7f638832a240
0:00:20.227243100 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:1072:handle_mq_input:multiqueue:sink_0 Fired probe type 0x1010
0:00:20.227269007 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:1131:handle_mq_input:multiqueue:sink_0 Buffer TS is 0:00:20.000000000
0:00:20.227288042 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:1145:handle_mq_input:multiqueue:sink_0 Buffer running TS is +0:00:20.000000000
0:00:20.227303696 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:1159:handle_mq_input:multiqueue:sink_0 in running time now +0:00:20.120181650
0:00:20.227318269 11185 0x7f63880314f0 DEBUG splitmuxsink gstsplitmuxsink.c:1180:handle_mq_input:multiqueue:sink_0 Buf TS +0:00:20.120181650 total in_bytes 21243668
0:00:20.227341942 11185 0x7f63880314f0 INFO splitmuxsink gstsplitmuxsink.c:1200:handle_mq_input:multiqueue:sink_0 Have keyframe with running time +0:00:20.120181650
0:00:20.227372698 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:959:check_completed_gop:<sink>
Checking GOP collected, Max in running time +0:00:20.120181650 ctx 0x7bf3a0
0:00:20.227400258 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:967:check_completed_gop:<sink>
Context 0x7bf3a0 (src pad multiqueue:src_0) TS +0:00:20.120181650 EOS 0
0:00:20.227418041 11185 0x7f63880314f0 DEBUG splitmuxsink gstsplitmuxsink.c:981:check_completed_gop:<sink>
Collected GOP is complete. Processing (ctx 0x7bf3a0)
0:00:20.227428282 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:899:handle_gathered_gop:<sink>
mq at TS +0:00:10.040000000 bytes 11000255
0:00:20.227447285 11185 0x7f63880314f0 INFO splitmuxsink gstsplitmuxsink.c:913:handle_gathered_gop:<sink>
mq overflowed since last, draining out. max out TS is +0:00:15.120181650
0:00:20.227461928 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:1243:handle_mq_input:multiqueue:sink_0 Sending splitmuxsink-unblock event
0:00:20.227485016 11185 0x7f63880314f0 LOG splitmuxsink gstsplitmuxsink.c:1072:handle_mq_input:multiqueue:sink_0 Fired probe type 0x1040
0:00:20.227489094 11185 0x7b4f70 INFO splitmuxsink gstsplitmuxsink.c:600:complete_or_wait_on_out:multiqueue:src_0 Woken for new max running time +0:00:15.120181650
0:00:20.227532716 11185 0x7b4f70 LOG splitmuxsink gstsplitmuxsink.c:567:complete_or_wait_on_out:multiqueue:src_0 Checking running time +0:00:15.120181650 against max +0:00:15.120181650
0:00:20.227555821 11185 0x7b4f70 INFO splitmuxsink gstsplitmuxsink.c:547:send_eos:<sink>
Sending EOS on muxer:video_0
Version: 1.12.3