У меня есть файл MP4, содержащий видео H.264, аудио AAC и закрытые титры EIA-608:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Duration: 00:11:26.02, start: 0.000000, bitrate: 4952 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 4818 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
handler_name : SoundHandler
Однако субтитры отображаются на 2 секунды раньше.
Уловка , как вы можете видеть, ffmpeg не распознает eia_608
как "поток", которым можно манипулировать с помощью команд -map
(как в этом вопросе). Поэтому при многократном вводе файла для повторного смешивания субтитров с задержкой выдается следующая ошибка:
Stream map '1:s' matches no streams.
To ignore this, add a trailing '?' to the map.
И, очевидно, -itsoffset
влияет на видео точно так же, как субтитры в каждом случае, во всяком случае.