如何使用 ffmpeg 将具有多个字幕轨道的 mkv 文件转换为 mp4,其中一个字幕流进行硬编码?

如何使用 ffmpeg 将具有多个字幕轨道的 mkv 文件转换为 mp4,其中一个字幕流进行硬编码?

我想知道如何使用 ffmpeg 将带有多个字幕和音轨的 mkv 文件转换为 mp4,其中一个字幕轨道是硬编码的,而一个音轨是选定的?它应该是一个命令,而不需要从原始 mkv 中提取轨道(如果可能的话)。

我到目前为止尝试过的是: ffmpeg -i File.mkv -map 0:s:1 -map 0:v -map 0:a:1 -c:a aac -c:v copy output.mp4但是字幕没有被硬编码到文件中,只是被多路复用到 mp4 容器中,如果可能的话(也许文件最终以 mp4 扩展名结尾,但它仍然是 mkv)。

ffmpeg -i File.mkv
Input #0, matroska,webm, from 'File.mkv':
  Metadata:
    encoder         : libebml v1.2.1 + libmatroska v1.1.1
    creation_time   : 2018-08-11T22:02:55.000000Z
  Duration: 00:24:57.22, start: 0.000000, bitrate: 2271 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 640x480 [SAR 1:1 DAR 4:3], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Metadata:
      title           : A Day in Ichinoseki
    Stream #0:1(eng): Audio: aac (LC), 48000 Hz, 5.1, fltp (default)
    Metadata:
      title           : English
    Stream #0:2(jpn): Audio: aac (LC), 48000 Hz, stereo, fltp
    Metadata:
      title           : Japanese
    Stream #0:3(eng): Subtitle: ass (default)
    Metadata:
      title           : English (Translation Only)
    Stream #0:4(eng): Subtitle: ass
    Metadata:
      title           : English
    Stream #0:5: Attachment: ttf
    Metadata:
      filename        : OpenSans-Semibold_0.ttf
      mimetype        : application/x-truetype-font
At least one output file must be specified

附言:我曾经知道一个命令,它可以给我一个 mkv 流的简单摘要,可以与 ffmpeg 命令逐字使用,但我忘记了它。

答案1

要使用 mkv 作为源嵌入字幕,请使用:

ffmpeg -i video.mkv -vf subtitles=video.mkv:si=1 out.mp4

将 id 替换si=1为您要硬编码的字幕流编号。您可以使用 进行检查ffprobe

相关内容