Есть 2 mp4-файла. В одном видео без звука, в другом - звук к нему. Требуется без перекодировки объединить их в один mp4-файл. Проблема в том, что у файла с видео не совсем корректный заголовок, в результате VLC и MP Classic играют его без проблем, а вот ffmpeg (и AviDemux) открывают только первый сегмент из 39.
Файл с видео разбит на сегменты по 26 кадров (логичнее было бы по 25, но уж как есть), причём длительность (duration) указана только для первого и последнего сегментов, для остальных она равна нулю.
В moov->mvex->trex указана длительность по умолчанию 3600, но ffmpeg, видимо, её игнорирует.
В moov таблицы stts, stsc и т.д. пустые. Что мне не понравилось - в moov -> trak -> mdhd указано time scale=90 000
а в moov -> mvhd указано time scale=1 000
но длительность чуть ниже с учётом этого масштаба получается правильная - 39 сек
ffmpeg видит только первый сегмент (чуть больше 1 сек). Пытался перенумеровать кадры через
ffmpeg -i video.mp4 -vcodec copy -bsf:v h264_mp4toannexb out.h264
ffmpeg -fflags +genpts -r 25 -i out.h264 -c copy out.mp4
все равно на выходе только первая секунда.
Как заставить ffmpeg увидеть весь файл? Или проставить duration=3600? Или как объединить видео и звук без перекодировки каким-либо другим методом?