[FFmpeg-user] cutting mp4 with ffmpeg

Mark Filipak markfilipak.imdb at gmail.com
Sun Jan 14 07:24:42 EET 2024


This is not the way to do things, Andrew.

Please do not add your notice of a trac ticket submission to my reply. It has nothing to do with my 
reply.

Your ticket has justifiably been closed.

Trac is not a place to get extra help. It is for bug reporting. Instead to a trac ticket, post your 
concerns here and try to gain help/confirmation/clarification here.

--Mark.

On 13/01/2024 22.11, Andrew Randrianasulu wrote:
> On Sat, Jan 13, 2024 at 10:27 PM Mark Filipak
> <markfilipak.imdb at gmail.com> wrote:
>>
>> On 13/01/2024 12.50, Andrew Randrianasulu wrote:
>>> On Sat, Jan 13, 2024 at 8:57 PM Def Etienne <shaker.doc at gmail.com> wrote:
>> -snip-
>>>> ffmpeg -i ~/6029.mp4  -copyts  c:v copy -c:acopy -t 64.600 dev/shm/6029_cut.mp4
>>
>> According to Devon Heitmueller -- thanks again, Devon -- '-copyts' and '-muxdelay 0' are _both_ needed.
>>
>> '-copyts' -- before the input -- bypasses a routine that apparently is named "tsfixup".
>>
>> '-muxdelay 0' -- after the input -- bypasses another ts fixup that defaults to adding 0.7 seconds to
>> the timestamps.
>>
>> Exactly why ffmpeg does those fixups is a mystery.
>>
>> I can confirm that when cutting off the beginning:
>> ffmpeg -copyts -ss ... -i ... -c copy -muxdelay 0 ...
>> works. It preserves the timestamps (DTS, PTS).
>>
>>
>> Regarding cutting off the ending:
>> ffmpeg -to ... -i ... -c copy ...
>> I am trying to determine the behavior of '-to'. Is it PTS? Or is it ticks (i.e., duration in
>> timebase units)? And does ffmpeg do fixups for '-to' clauses, also? It appears there are such '-to'
>> fixups.
>>
>>
>> Also be aware that MPV rounds time, and rounds to milliseconds whereas ffmpeg truncates time and
>> truncates frame numbers, DTSs, and PTSs. So times from MPV may miss an I-frame in ffmpeg. What I do
>> is use MPV times to find approximate frame number. Then I use '-vf showinfo' to find exact frame
>> number. Then I compute exact DTS and exact PTS from exact frame number. Then I convert DTS and PTS
>> to nanoseconds in the '-ss' clause.
> 
> I added ticket about ffprobe/vf_showinfo displaying truncated duration:
> 
> https://trac.ffmpeg.org/ticket/10799#ticket
> 
> 
>>
>> Why does 'ffmpeg -ss' use times instead of relative timebase ticks (i.e. durations) or absolute DTSs
>> and PTSs? Your guess is as good as mine, but it is a super PITA.
>>
>> Why does ffmpeg apply ts fixups? Your guess is as good as mine, but it is a super PITA.
>>
>>
>> Also, be aware that in this listing:
>>
>>> [Parsed_showinfo_0 @ 0xee202580] n:1612 pts:5803200 ...
>>
>> the reported PTS is _not_ PTS. It is ticks (i.e., duration in timebase units) that is marked "pts"
>> but isn't -- another super PITA.
>>
>>
>> Also, remuxing from M2TS to MP4 for example, applies more unknown fixups even when they have the
>> exact same timebase -- another super PITA -- so don't change packet type until the very end of your
>> timming and concatenating.
>>
>> --Mark.




More information about the ffmpeg-user mailing list