ffmpeg - Добавление и удаление субтитров без изменения видео - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь встроить субтитры в видео и снова удалить субтитры, не меняя видео, то есть хочу, чтобы выходное видео было таким же, как и у исходного видео.

Я использую следующеекоманда для встраивания субтитров

ffmpeg -i original.mp4 -i original.srt \
-c:v copy -c:a copy -c:s mov_text \
-map_metadata 0:g -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a \
-movflags +faststart -threads 8 \
output.mp4

Чтобы удалить субтитры,

ffmpeg -i output.mp4 \
-c:v copy -c:a copy \
-map_metadata 0:g -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a \
-movflags +faststart -threads 8 \
-sn \
removed.mp4

Вывод почти такой же, но я не мог понять, что может вызвать разницу.Когда я сравниваю двоичные файлы, почти все различия составляют

original: 0xF3
removed: 0xF4

Байты увеличиваются на 1, я думаю, только в заголовке.

Вы можете помочь?Заранее спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

В общем, вы не можете ожидать, что результат операции remux из ffmpeg будет идентичен исходному, особенно если источник был сгенерирован каким-либо другим приложением.

Для начала генератор исходного кода может написатьключи метаданных, которые не записывает мультиплексор ffmpeg.В исходном moov могут быть проприетарные блоки, которые ffmpeg не записывает.

Наконец, ffmpeg будет печатать версии библиотеки lav, но их можно пропустить, указав -fflags +bitexact.

Обратите внимание, чтос помощью copy потоковые пакеты копируются, поэтому целостность медиапотоков сохраняется.

...