[FFmpeg-user] problem with fast seeking and splitting

Ferdi Scholten ferdi at sttc-nlp.nl
Mon May 2 23:59:08 EEST 2022



On 02-05-2022 10:18, Paul B Mahol wrote:
> On Mon, May 2, 2022 at 9:54 AM Alexander Solonsky <
> alexander.solonsky at castlabs.com> wrote:
>
>> Monday, May 2, 2022, 2:21:17 PM, you wrote:
>>
>>
>>
>>
>> On Mon, May 2, 2022 at 7:27 AM Alexander Solonsky via ffmpeg-user <
>> ffmpeg-user at ffmpeg.org> wrote:
>>
>>> Dear Experts,
>>>
>>> I'm trying to split an input file into 2 second chunks, transcode and
>>> assemble using a concat muxer. And experiencing two problems:
>>> major one:
>>> 1) when using ffmpeg -ss 00:00:08 -t 2 -i <input_file> -c:v libx264 ....
>>> instead of seeking to second 8, ffmpeg seeks somewhere to second 15 or so.
>>> The first segments are correct, and then it start to go haywire.
>>> Using accurate seek ffmpeg  -i <input_file> -ss 00:00:08 -t 2 -c:v
>>> libx264 ....  resolves the problem. But it is completely unusuble if you
>>> want to split the whole file.
>>> Minor one:
>>> 2) when concatenating the resulting files - there happens a noticeable
>>> break between the chunks. For both audio and video and is equal to 2
>>> additional frame durations (e.g. prev chunk ends at 1.981333 and the next
>>> chunk (after concat) while it should start at 2.023000 actually starts at
>>> 2.095744 for 24 fps video, and for audio prev chunk ends at 1.927256 and
>>> starts at 2.023220 while it should start at 1.950476).
>>>
>>> adding all additional flags like copyts, copytb, enctimebase, vsync
>>> doesn't change anything. And it's really curious when using the hls demuxer
>>> - it splits the file accurately and fast, without these breaks.
>>>
>>> Can you please help me fix those two problems or suggest to understand
>>> which command like I could use to reproduce splitting behavior from the HLS
>>> demuxer?
HLS demuxer is a totally different beast than ffmpeg, it operates from 
an audio/video stream (from hlssink2) and it generates keyframes when 
desired e.g. when the stream needs cutting it generates a keyframe for 
that purpose from which the cut can be made.

ffmpeg works with the encoded audio/video container that has fixed 
keyframes, if you want the same behaviour you will need to work with 
uncompressed audio/video.

greetings
Ferdi Scholten



More information about the ffmpeg-user mailing list