Есть несколько разных видео в формате mpegts, разобранное на каналы и на сегменты виде набора файлов:
a01.ts, a02.ts, ..., a99.ts
v01.ts, v02.ts, ..., v98.ts
Задача: собрать в один файл mp4 или mkv.
Сложности: аудио сегментов чуть больше (99 vs 98) и они меньше по длительности, но суммарная длительность совпадает; 2-3 файла битые, пустые или отсутствуют. Я готов пережить кратковременное молчание или стоп кадр в таком случае.
Неправильное решение 1. Склеить отдельно аудио, отдельно видео, потом объединить
ffmpeg -f concat -safe 0 -i a_list.txt -c copy a.ts
ffmpeg -f concat -safe 0 -i v_list.txt -c copy v.ts
ffmpeg -i a.ts -i v.ts -c copy av.mp4
Склеенные аудио и видео потоки имеют разную длительность из-за пропущенных файлов, в итоговом видео с какого-то момента появляется существенный рассинхрон из-за пустого файла
Неправильное решение 2. Объединить попарно аудио, затем все склеить вместе
ffmpeg -i a01.ts -i v01.ts -c copy av01.ts
...
ffmpeg -i a98.ts -i v98.ts -c copy av98.ts
ffmpeg -f concat -safe 0 -i av_list.txt -c copy av.mp4
Тут рассинхрон медленно нарастает с самого начала, так как сегменты разной длительности
Вопрос: Формат mpegts содержит все данные для правильной синхронизации PCR+PTS, они корректные в исходных файлах, проверено. Но я не нашел способа как заставить tsduck или ffmpeg произвести требуемый результат, т.е. как синхронизовать потоки аудио и видео на основе PCR, а не на просто на битрейте. Посоветуйте, пож.