[FFmpeg-user] Packet corrupt on cut, notice on concat

Mark Filipak markfilipak.imdb at gmail.com
Mon Feb 19 19:47:08 EET 2024

On 19/02/2024 01.16, Greg Oliver wrote:
> I usually do not chime in on your emails where people flame you for writing
> a book or being a troll because I usually learn something from the
> discussions.

Hi Greg. I'm not writing a book. That's something someone made up.

> Lately you have not posted one example clip or logs from anything you have
> asked questions about.

That's because there's no errors in my logs. What I'm doing is correct. What I have been posting is 
framecrc outputs that prove what I say.

I'm cutting solely on packets that contain I-frames. I'm joining packets that contain I-frames on 
both sides of the join. There's no decoding, no encoding. There's only remuxing. I'm well aware of 
DTS-order versus PTS-order.

I began with
ffmpeg -ss <starttime> -to <endtime> -i this.m2ts
of course. It cut at the right place but the output included 52 audio frames and a B-frame that 
should have been cut. The join was not correct of course and the MPV player behaved as one would 
expect from a bad join.

I tried
ffmpeg -i this.m2ts -ss <starttime> -to <endtime>
but that cut at the wrong PTSs -- hundreds of packets early. There were other issues, too. No one 
could explain that behavior.

I asked if there is a way to discard specific packets based on PTSs. Gyan suggested I try
ffmpeg -i this.m2ts -bsf noise
I used '-bsf noise' to do _all_ the cutting and that appeared to work beautifully. The outputs 
appeared to be perfect in every way.

It was when I joined (concatenated) those segments what I discovered another problem: FFmpeg had 
corrupted the final B-frame just before the ending I-frame. When I 'moved' the cuts and join around 
in time, the 'corruption' followed the moves, always the final B-frame just before the ending I-frame.

The video is 24/1.001fps, so ticks-per-frame is 3753.75. Because PTSs are integers, 3753.75 tick 
intervals must be turned into integer PTSs. That was when I discovered that FFmpeg is not truncating 
correctly, so PTSs are not correct.

> You're being vague and Gyan just gave you something
> to try and you refused to try with just more questions.

Gyan suggested I add '-mpegts_flags +initial_discontinuity'. I tried it.
ffmpeg -copyts -i "concat:this1.m2ts|this2.m2ts" -map 0 -mpegts_flags +initial_discontinuity -c copy 
-dn -muxdelay 0 "that.m2ts"
The result:
"Packet corrupt (stream = 0, dts = 504201210)" and the same glitch in MPV. Do I know whether the 
corruption is from the cutting or the joining? Of course not.

> Sorry, but I find this list valuable and you are starting to put a bad
> taste in my mouth.

I'm so sorry about that. I don't know how to solve problems any other way than to try, try, try.

> And Reindl and Paul - I don't need any smart ass
> comments.  Reindal, I think that we are almost on all the same lists and
> everyone hates you, and Paul, you're ego would be bad in certain circles of
> technology people.

I think both Paul and Harold are trying to be helpful in their own ways. I'm a behaviorist, so I 
don't 'talk' about motives at all.

I think there are many bugs -- that's expected in an application that evolved as a collection of 
use-cases. I think I'm hitting them. I need help from a patient and persistent person who can read 
the source code.

I have a few best friends on ffmpeg-user but they don't participate much. I have a sneaking 
suspicion that Paul just might become my best-best friend on ffmpeg-user, but don't tell him.

I first got involved in video at Atari Advanced Engineering in the early 1980s where I redesigned 
its 2600 game system to produce NTSC/PAL/SECAM signals & timing that was 100% 
NTSC-/PAL-/SECAM-complaint. I have designed hundreds of hardware state machines for circuits, chips, 
and systems that I designed (and often invented) in Silicon Valley in California during the next 25 
years. They are/were used in games, test equipment, networking, NATO fighters and tanks, and various 
other design projects. Maybe half of what I designed was programmable. I program mostly in assembly 
language though I have written device drivers and test programs in about 10 other languages. In 
Silicon Valley, almost all my friends were codesmiths. :-)


More information about the ffmpeg-user mailing list