Итак, когда я смотрю на оригинальное видео:
ffprobe -v error -show_entries stream=index,codec_name,codec_type example.mkv
Я вижу что-то вроде этого:
[STREAM]
index=0
codec_name=h264
codec_type=video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_type=audio
[/STREAM]
[STREAM]
index=2
codec_name=ass
codec_type=subtitle
[/STREAM]
[STREAM]
index=3
codec_name=ttf
codec_type=attachment
[/STREAM]
Мой процесс включает в себя извлечение файла задницы через:
ffmpeg -i input.mkv -map 0:s:0 subs.ass
Я редактирую файл субтитров в vim
. Затем я пытаюсь добавить файл субтитров обратно в файл MKV с чем-то вроде:
ffmpeg -i input.mkv -f ass -i subs.ass \
-map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy \
-c:s copy output.mkv
Но когда я проверяю output.mkv, я вижу только
[STREAM]
index=0
codec_name=h264
codec_type=video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_type=audio
[/STREAM]
[STREAM]
index=2
codec_name=ass
codec_type=subtitle
[/STREAM]
Как видите, я теряю поток вложений, и субтитры больше не воспроизводятся по умолчанию. Вот я и наткнулся на другие команды:
Сделать субтитры по умолчанию:
ffmpeg -i output.mkv -f ass -i subs.ass -c copy -disposition:s:0 default out.mkv
Дамп шрифт из оригинала:
ffmpeg -dump_attachment:t "" -i original.mkv
Прикрепить шрифт к отредактированному видео:
ffmpeg -i out.mkv -attach OpenSans-Semibold.ttf -metadata:s:3 mimetype=application/x-truetype-font final.mkv
Но затем каким-то образом в этих процессах звук меняется с aac
на vorbis
, а видео меняется с h264 (native)
на h264 (libx264)
. Как сохранить потоки при внесении простых изменений ошибок в субтитрах?