Bash 用ffmpeg替换字幕中的单词

Bash 用ffmpeg替换字幕中的单词,bash,ffmpeg,Bash,Ffmpeg,我想用ffmpeg替换视频文件所有字幕中出现的所有单词。应复制所有非字幕频道(不重新编码),并尽可能保留原始字幕的所有格式 例如: ffmpeg -i input.mkv -SUBTITLEFILER='old_word/new_word' output.mkv 我正在使用Ubuntu19.04和bash(以防需要额外的步骤或依赖项)ffmpeg没有字幕的查找/替换功能,但您可以通过3个命令无损地完成此操作: 提取字幕: ffmpeg-i input.mkv-map 0:s:0-c copy

我想用ffmpeg替换视频文件所有字幕中出现的所有单词。应复制所有非字幕频道(不重新编码),并尽可能保留原始字幕的所有格式

例如:

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

我正在使用Ubuntu19.04和bash(以防需要额外的步骤或依赖项)

ffmpeg
没有字幕的查找/替换功能,但您可以通过3个命令无损地完成此操作:

  • 提取字幕:

    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
    
    我假设您的字幕是变电站Alpha(ASS/SSA)字幕。如果不同,请使用适当的输出名称:例如SubRip的
    .srt
    (请参阅
    ffmpeg-muxers

  • 替换为
    sed

    sed -i 's/cat/dog/g' *.ass
    
  • 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:1 language=eng-metadata:s:2 language=fin output.mkv
    
  • 如果要将某个字幕设置为默认字幕,请参见中所示的
    -disposition
    选项