ffmpeg字幕操作

一,增加字幕流

1
2
3
4
5
6
# -i输入文件, 
# -map 0:0 第一个0代表输入的第一个文件,第二个0代表该文件中的第一个流
# -c:a copy 代表输入的文件中音频部分编码不变直接输出
# -c:v copy 代表输入的文件中视频部分编码不变直接输出
# -c:s copy 代表输入的文件中字幕部分编码不变直接输出
ffmpeg -i input.avi -i sub.ass -map 0:0 -map 0:1 -map 1 -c:a copy -c:v copy -c:s copy out.mkv

二,提取字幕流

  1. 原始文本输出

    1
    2
    3
    4
    5
    6
    7
    # 相同解释同上
    # -an 代表取消输入文件中的音频部分
    # -vn 代表取消输入文件中的视频部分
    # -bsf:s 代表比特流过滤器其中字幕部分 把mov中的字幕转化为text
    # -scodec 同-codec:s ,意思是设置字幕编码,copy意思是与输入文件字幕编码相同
    # -f rawvideo 指定输出格式
    ffmpeg -i output.mkv -an -vn -bsf:s mov2textsub -scodec copy -f rawvideo sub.txt
  2. 原始文本输出

    1
    2
    # 相同解释同上
    ffmpeg -i output.mkv -an -vn -c:s copy -f rawvideo -map 0:s sub2.txt
  3. ass格式输出

    1
    2
    3
    # 原始文本输出
    # ass格式输出
    ffmpeg -i output.mkv -an -vn -scodec copy sub3.ass