заменить слово в субтитрах на ffmpeg - PullRequest
1 голос
/ 19 марта 2020

Я хочу использовать ffmpeg для замены всех вхождений слова во всех субтитрах видеофайла на ffmpeg. Все каналы без субтитров должны быть скопированы (не перекодированы), и все форматирование из исходных субтитров должно остаться, если это возможно.

пример:

ffmpeg -i input.mkv -SUBTITLEFILER='old_word/new_word' output.mkv

Я использую Ubuntu 19.04 и bash (на случай, если для этого потребуются дополнительные шаги или зависимости)

1 Ответ

2 голосов
/ 19 марта 2020

ffmpeg не имеет функции поиска / замены для субтитров, но вы можете сделать это без потерь с помощью 3 команд:

  1. Извлечение субтитров:

    ffmpeg -i input.mkv -map 0:s:0 -c copy sub0.ass -map 0:s:1 -c copy sub1.ass -map 0:s:2 -c copy sub2.ass
    

    Я предполагаю, что ваши субтитры являются субтитрами SubStation Alpha (ASS / SSA). Используйте соответствующее имя выхода, если они отличаются: например, .srt для SubRip (см. ffmpeg -muxers).

  2. Замените на sed:

    sed -i 's/cat/dog/g' *.ass
    
  3. Remux:

    ffmpeg -i input.mkv -i sub0.ass -i sub1.ass -i sub2.ass -map 0 -map -0:s -map 1 -map 2 -map 3 -c copy -metadata:s:s:0 language=fas -metadata:s:s:1 language=eng -metadata:s:s:2 language=fin output.mkv
    

Если вы хотите сделать определенный субтитр по умолчанию, см. Параметр -disposition, как показано в наборе ffmpeg дорожка субтитров по умолчанию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...