[FFmpeg-user] Can't get a/v synchronisation right with mpeg transport stream that has gaps in it

Erik Slagter erik at slagter.name
Fri Mar 31 10:50:34 EEST 2017

On 30-03-17 01:01, Carl Eugen Hoyos wrote:
> 2017-03-29 16:44 GMT+02:00 Erik Slagter <erik at slagter.name>:
>>> Needs -async 1
>> Have a look at this part of the command line:
>> -filter:a "
>> aresample=async=10000:min_comp=0.1:min_hard_comp=0.1:max_soft_comp=10000:first_pts=0"
>> This is what -async 1 does
>> (-async is declared "obsolete").
> At least I find "-async 1" easier to remember so I hope it will stay...
> Please provide a sample if it doesn't work for you.

The "sample" is 1.5 hours long, with the gaps spread over the complete 
running time.

It's quite easy to create one yourself though.

- create an mpeg transport stream with h264 video and ac3 audio (even 
better if you can have one completely from a DVB source)
- at multiple locations, cut out a piece, doesn't really matter how far 
spread out or how long the gaps are; use a file-level cutter, like dd, 
it's important that the gaps have incomplete packets (so don't use a 
tool that is aware of mpeg stream structure, like ffmpeg itself)

That's all. Now convert it to something else, using ffmpeg, like 
mjpeg+pcm in mkv, using the flags mentioned. You'll that most of the a/v 
desync created by the gap is worked around by ffmpeg, but a tiny bit is 
left, making the audio and video get out of sync just a little bit more 
with every gap, 100-200 ms.

More information about the ffmpeg-user mailing list