ffmpeg - 在视频文件上添加/重新编码音频流

ffmpeg - 在视频文件上添加/重新编码音频流

我想将音频流添加到现有视频文件。我遇到的问题是:

  • 文件可以有多个音频流(不同的语言/评论)。
  • 文件可以有多个文本流。

我的问题是,有时音频编解码器与我的媒体播放器不兼容,所以我只想复制“X”音频流(通常是 DTS),将其转换为 AAC 并将其添加到同一个文件中。

我尝试过一些例子本论坛但我得到的结果好坏参半。尤其是因为 txt 流。我确信有办法一次性获得此输出。

这是正确的命令吗?

ffmpeg -i "input-video.mkv" -map 0:v -c:v copy -map 0:a -c:a copy -map 0:1 -c:1 libfdk_aac -b:a 384k -map 0:s -c:s copy "output-video.mkv"

在哪里:

-map 0:1 -c:1 libfdk_aac -b:a 384k

意思是映射文件 0、流 1、复制……然后我不知道它在做什么

我还添加了 ffmpeg -i“input-video.mkv”的输出

Input #0, matroska,webm, from 'input-video.mkv':
  Metadata:
    title           : input-video
    encoder         : libebml v0.7.7 + libmatroska v0.8.1
    creation_time   : 2008-09-18T20:25:36.000000Z
  Duration: 02:23:27.34, start: 0.000000, bitrate: 12303 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x800, SAR 1:1 DAR 12:5, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Audio: vorbis, 48000 Hz, stereo, fltp
    Metadata:
      title           : Commentary
    Stream #0:3(eng): Subtitle: ass (default)
    Stream #0:4(eng): Subtitle: ass
    Metadata:
      title           : Commentary
    Stream #0:5(cze): Subtitle: ass
    Stream #0:6(dan): Subtitle: ass
    Stream #0:7(fre): Subtitle: ass
    Stream #0:8(ger): Subtitle: ass
    Stream #0:9(hun): Subtitle: ass
    Stream #0:10(nor): Subtitle: ass
    Stream #0:11(pol): Subtitle: ass
    Stream #0:12(por): Subtitle: ass
    Stream #0:13(rus): Subtitle: ass
    Stream #0:14(scc): Subtitle: ass
    Stream #0:15(scr): Subtitle: ass
    Stream #0:16(slv): Subtitle: ass
    Stream #0:17(spa): Subtitle: ass
    Stream #0:18(swe): Subtitle: ass

答案1

假设您想要两个音频流副本,一个是原始 DTS,一个是 AAC,请首先映射用于重新编码的流。

ffmpeg -i "input-video.mkv" -map 0:v -map 0:a:0 -map 0:a -map 0:s -c copy -c:a:0 libfdk_aac -b:a:0 384k "output-video.mkv"

相关内容