<div dir="auto"><div>Hi,<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 21 juill. 2023, 08 h 30, Антон Шаров via gstreamer-devel <<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><div>Hi! Thank you for reply!</div><div> </div><div>How to fix this issue? From one point of view I think it would be ok to ask user for n seconds and </div><div>set n+2 to obtain exact duration, but I think I miss somthing to deal with it properly.<br> </div><blockquote style="border-left:1px solid #0857a6;margin:10px;padding:0 0 0 10px">Пятница, 21 июля 2023, 14:05 +03:00 от Krutskikh Ivan <<a href="mailto:stein.hak@gmail.com" target="_blank" rel="noreferrer">stein.hak@gmail.com</a>>:<br> <div id="m_3789412716647454323"><div><div><div id="m_3789412716647454323style_16899375450147536453_BODY"><div><div><div>Hi!</div><div> </div><div>I think it depends on seconds between key (I) frames since splitmuxsink begins each new file with a key frame.</div></div></div></div></div></div></div></blockquote></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The splitmuxsink property is called max-size-time, so it's logical that when your are not transcoding it will always splits smaller.</div><div dir="auto"><br></div><div dir="auto">Adding a min-size-time property could be an option. You can also transcode, and then you will have quite accurate splits.</div><div dir="auto"><br></div><div dir="auto">Regards,</div><div dir="auto">Nicolas</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><blockquote style="border-left:1px solid #0857a6;margin:10px;padding:0 0 0 10px"><div id="m_3789412716647454323"><div><div><div id="m_3789412716647454323style_16899375450147536453_BODY"><div> <div><div>пт, 21 июл. 2023г. в 13:46, Антон Шаров via gstreamer-devel <<a href="//e.mail.ru/compose/?mailto=mailto%3agstreamer%2ddevel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a>>:</div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>Hi. </div><div> </div><div>I found very strange issue with splitmuxsink and it’s max-size-time property, namely</div><div>given n sec. for desired duration, it’s actual duration would be n-2 sec. Initially I’ve discovered this</div><div>issue while testing hand-coded pipeline, but then desided to reproduce the issue with gst-launch</div><div>and observed the very same behaviour. Given </div><div>gst-launch-1.0 -e -v rtspsrc buffer-mode=0 add-reference-timestamp-meta=true location=rtsp://user:pass@ip_addr/onvif/media?profile=Profile1 ! rtph264depay ! h264parse ! splitmuxsink location="d:\\video_files\\video_%02d.mp4" max-size-time=10000000000</div><div>(note, max-size-time=10000000000 is 10 sec in nanoseconds)</div><div>the actual duration of files will be 8 sec.</div><div>Same for 7→ 5, 5→ 3, and so on. So, it seems to be the pattern — set for n secodns, receive for n-2 seconds.</div><div>Is it ok or maybe I miss something? I don’t think that it depends on rtps source.</div><div> </div><div>Thanks in advance.</div><div> </div><div>Here some initial seesion info:</div><div><div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: latency = 2000</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-sync = false</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: rfc7273-sync = false</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: add-reference-timestamp-meta = true</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-time-source = ntp</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: drop-on-latency = false</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: max-rtcp-rtp-time-diff = 1000</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: max-ts-offset-adjustment = 0</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = none</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: timeout = 5000000000</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: caps = application/x-rtp, media=(string)video, payload=(int)97, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)4D00000000000000, sprop-parameter-sets=(string)"Z00AH52oFAFum4CAgIE\=\,aO48gA\=\=", a-framerate=(string)15, ssrc=(uint)3053121902</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc2: caps = application/x-rtcp</div><div>Progress: (request) SETUP stream 1</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc3: timeout = 5000000000</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc3: caps = application/x-rtp, media=(string)audio, payload=(int)0, clock-rate=(int)8000, encoding-name=(string)PCMU, encoding-params=(string)1, ssrc=(uint)2174462030</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc4: caps = application/x-rtcp</div><div>Progress: (open) Opened Stream</div><div>Setting pipeline to PLAYING ...</div><div>New clock: GstSystemClock</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = none</div><div>Progress: (request) Sending PLAY request</div><div>Redistribute latency...</div><div>Redistribute latency...</div><div>Progress: (request) Sending PLAY request</div><div>Redistribute latency...</div><div>Redistribute latency...</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: caps = application/x-rtp, media=(string)video, payload=(int)97, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)4D00000000000000, sprop-parameter-sets=(string)"Z00AH52oFAFum4CAgIE\=\,aO48gA\=\=", a-framerate=(string)15, ssrc=(uint)3053121902, clock-base=(uint)2632806877, seqnum-base=(uint)14666, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, onvif-mode=(boolean)false</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc3: caps = application/x-rtp, media=(string)audio, payload=(int)0, clock-rate=(int)8000, encoding-name=(string)PCMU, encoding-params=(string)1, ssrc=(uint)2174462030, clock-base=(uint)661265319, seqnum-base=(uint)53364, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, onvif-mode=(boolean)false</div><div>Progress: (request) Sent PLAY request</div><div>/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)97, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)4D00000000000000, sprop-parameter-sets=(string)"Z00AH52oFAFum4CAgIE\=\,aO48gA\=\=", a-framerate=(string)15, ssrc=(uint)3053121902, clock-base=(uint)2632806877, seqnum-base=(uint)14666, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, onvif-mode=(boolean)false</div></div></div><div> </div><div> </div><div> </div><div><div><div>--<br>С Уважением,<br>Шаров Антон</div></div></div></div></blockquote></div></div></div></div></div></div></blockquote> <div> </div><div><div><div>--<br>С Уважением,<br>Шаров Антон</div></div></div><div> </div></div></div>
</blockquote></div></div></div>