У меня есть этот видеофайл, который в какой-то момент вводит асинхронность ~ 1 секунду. Поэтому я попытался заставить его работать, продублировав короткий сегмент в этом месте, так как там тихо:
$ ffmpeg -i DFW.mp4.mkv -filter_complex '
[0:a] aselect=n=3:e=lt(t\,18*60+42.100)+gt(t\,18*60+41)*2 [as] [ae] [am];
[am] asplit [am1] [am2];
[as] asetpts=PTS-STARTPTS [as];
[am1] asetpts=PTS-STARTPTS [am1];
[am2] asetpts=PTS-STARTPTS [am2];
[ae] asetpts=PTS-STARTPTS [ae];
[as] [am1] [am2] [ae] concat=n=4:a=1:v=0 [a]' -map 0:v -map '[a]' -c:v copy DFW-1.mp4
Другими словами, у меня есть
as
начало до 18:41.000ae
конец с 18:42.100am
средний участок между 18:41.000 и 18:42.100, который следует повторить один разСегментация работает, конкатенированная звуковая часть звучит хорошо. Однако ae
оказывается, что это всего ~ 5 секунд, и он ffmpeg
начинает печатать спамные строки «Переполнение очереди буфера, отбрасывание». Все видео длится 1 час 30 минут, оставляя меня с большим количеством тишины до конца.
Другими словами, видео и звук в порядке примерно до 18:48.000, а оставшиеся 1 час 11 минут видео не имеют звука.
Почему это происходит ffmpeg
и как я могу это исправить?
Я также пытался вместо этого включить аудиосегмент тишины в качестве плана Б, но потерпел неудачу.
Предполагая, что в аудио нет разрывов временных меток, должен работать простой атрим и нулевой сегмент.
ffmpeg -i DFW.mp4.mkv -filter_complex '
[0:a]asplit[a][b];
[a]atrim=0:1122.1[pre];
[b]atrim=1122.1,asetpts=PTS-STARTPTS[post];
anullsrc,atrim=0:1.1[seg];
[pre][seg][post]concat=n=3:a=1:v=0[a]' -map 0:v -map '[a]' -c:v copy DFW-1.mp4
atrim
s.atrim
s.
Гьян
sjngm
ae
это ~ 5 секунд, что странно.