AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1329432
Accepted
Shravan Mhatre
Shravan Mhatre
Asked: 2021-04-06 09:11:59 +0800 CST2021-04-06 09:11:59 +0800 CST 2021-04-06 09:11:59 +0800 CST

如何使用 FFmpeg 更改默认音轨?

  • 772

我想将文件 input.mkv 中的默认音轨从葡萄牙语更改为英语。

该视频包含 4 个音轨:葡萄牙语(默认)、西班牙语、英语和日语。我也想保留字幕。

视频信息如下:

Input #0, matroska,webm, from 'input.mkv':
  Metadata:
    encoder         : libebml v1.3.10 + libmatroska v1.5.2
    creation_time   : 2021-01-24T22:56:10.000000Z
  Duration: 00:26:36.85, start: -0.007000, bitrate: 2157 kb/s
    
    Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv), 1920x1080, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
    Metadata:
      BPS-eng         : 1880412
      DURATION-eng    : 00:24:21.134000000
      NUMBER_OF_FRAMES-eng: 35032
      NUMBER_OF_BYTES-eng: 343441847
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:1(por): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      ENCODER         : Lavc58.97.100 libopus
      BPS-eng         : 116334
      DURATION-eng    : 00:24:21.639000000
      NUMBER_OF_FRAMES-eng: 73082
      NUMBER_OF_BYTES-eng: 21254949
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:2(spa): Audio: opus, 48000 Hz, stereo, fltp
    Metadata:
      ENCODER         : Lavf55.33.100
      BPS-eng         : 121447
      DURATION-eng    : 00:26:36.843000000
      NUMBER_OF_FRAMES-eng: 79843
      NUMBER_OF_BYTES-eng: 24241492
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:3(eng): Audio: opus, 48000 Hz, stereo, fltp
    Metadata:
      BPS-eng         : 103565
      DURATION-eng    : 00:24:21.049000000
      NUMBER_OF_FRAMES-eng: 73053
      NUMBER_OF_BYTES-eng: 18914357
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:4(jpn): Audio: opus, 48000 Hz, stereo, fltp
    Metadata:
      BPS-eng         : 104161
      DURATION-eng    : 00:24:21.138000000
      NUMBER_OF_FRAMES-eng: 73057
      NUMBER_OF_BYTES-eng: 19024328
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:5(por): Subtitle: ass
    Metadata:
      BPS-eng         : 79
      DURATION-eng    : 00:23:59.360000000
      NUMBER_OF_FRAMES-eng: 245
      NUMBER_OF_BYTES-eng: 14246
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:6(spa): Subtitle: ass
    Metadata:
      BPS-eng         : 83
      DURATION-eng    : 00:23:59.360000000
      NUMBER_OF_FRAMES-eng: 242
      NUMBER_OF_BYTES-eng: 15096
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:7(eng): Subtitle: ass
    Metadata:
      title           : (Forced)
      BPS-eng         : 435
      DURATION-eng    : 00:23:05.930000000
      NUMBER_OF_FRAMES-eng: 523
      NUMBER_OF_BYTES-eng: 75467
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:8(eng): Subtitle: ass
    Metadata:
      BPS-eng         : 505
      DURATION-eng    : 00:23:59.390000000
      NUMBER_OF_FRAMES-eng: 775
      NUMBER_OF_BYTES-eng: 90904
      _STATISTICS_WRITING_APP-eng: mkvmerge v45.0.0 ('Heaven') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-24 22:56:10
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
ffmpeg
  • 2 2 个回答
  • 5686 Views

2 个回答

  • Voted
  1. Best Answer
    andrew.46
    2021-04-06T20:35:52+08:002021-04-06T20:35:52+08:00

    可以使用 FFmpegmap和disposition选项来完成音频流的排序。最好的语法可以说是:

    ffmpeg -i input.mkv -map 0:v:0 \
           -map 0:a:2 -map 0:a:0 -map 0:a:1 -map 0:a:3 \
           -map 0:s -c copy \
           -disposition:a:0 default \
           reordered.mkv
    

    稍微解压一下:

    • -map 0:v:0:选择第一个(也是唯一一个)视频流
    • -map 0:a:1 -map 0:a:0 -map 0:a:2 -map 0:a:3:音频流是单独放置的。每个“集合”的最后一个数字从 4 个音频流中选择,“0”是第一个流,“3”是最终的音频流。英语当然是首先指定的,并且是流 2。
    • -map 0:s:选择所有的字幕文件
    • -c copy:复制视频、音频和字幕流,无需重新编码。
    • -disposition:a:0 default:这将我们所需的音频流(英语)设置为默认值。如果这已在另一个输入音频流上设置,则很有用。

    这在我的系统上生成的测试文件上运行良好,并且在您的系统上也应该运行良好......

    笔记...

    • 使用 -map 选项选择流:编写精美的 FFmpeg trac 使用 FFmpegmap选项的指南
    • FFmpeg 的主要选项:从此链接向下滚动以查看可用于 FFmpeg 选项的用法和disposition选项。
    • 8
  2. Alan T
    2021-09-24T02:52:57+08:002021-09-24T02:52:57+08:00

    我通过向谷歌询问一个高度相关但略有不同的问题找到了这个帖子——我现在有了答案。因此,与我有相同问题的其他人也可能会在这里结束,这可能会在某个时候帮助其他人。

    我们的“智能”电视集成了 Mp4 播放器,可以播放 MP3 或 AAC 音轨。我有一堆(大约 80 个)具有 AAC 配乐的文件 - 但这些文件以非常低的音量播放(电视音量设置为 100% 远不足以听到很多对话)。由于房子里有听力问题且没有嵌入式潜艇的老人,这使得上述视频无法观看。

    所以,我想要一种使用 ffmpeg 的方法:

    1. 保留原 AAC 的同时,还添加了源自 AAC 的 MP3 音轨,但经过响度处理,适合看电视。

    2. 将 AAC 音轨降级为第二个音频流,同时将新的 MP3 音频设为默认。在实验过程中,我发现这个特定的电视播放器(松下)总是默认为第一个音频流——无论哪个被标记为默认值。

    3. 作为锦上添花,我想给每个音频流一个适当的元数据标题。

    我本可以对现有的流进行解复用,然后创建新处理的音频,然后将它们全部重新混合,但我确信 ffmpeg 可以作为一个命令行来执行此操作 - 当您有 80 个文件时,这可以实现更整洁和更快的进度去做。ffmpeg 没有让我失望。

    在上面的答案和我发现的其他东西的帮助下,这是我最终得到的命令行 - 很有效。

    ffmpeg -i intest.mp4 -map 0 -disposition:a:0 0 -c:v copy -c:a:0 libmp3lame -metadata:s:a:0 title="MP3-LoudnessProcessed" -metadata:s:a:1 title="OriginalAAC" -filter:a loudnorm -disposition:a:0 default -map 0:a:0 -disposition:a:1 0 outtest.mp4 
    

    在这个命令中:

    • -map 0 表示选择所有流

    • -disposition:a:0 0 意味着,忘记第一个音频流是默认音频流

    • -c:v copy– 表示按原样传输视频流

    • -c:a:0 libmp3lame -metadata:s:a:0 title="mp3-LoudnessProcessed" -filter:a loudnorm -disposition:a:0 default 意味着将新的 MP3 音频流作为流 0 并将其命名为“Mp3”,同时对该流进行响度标准化并将其设为默认音频

    • -map 0:a:0 表示从输入文件映射第一个现有的 AAC 音频流。因为这是最后发生的,所以它最终成为第二个音频流(流 1)。有些播放器总是默认使用第一个音频流(流 0)——无论哪个被标记为默认音频,所以我需要确保 AAC 流是最后一个。

    • -disposition:a:1 0 - 意味着忘记现有的音频流(现在的音频流 1)曾经是默认的。这实际上可能不需要(??)但没有害处。

    ffmpeg 永远不会给人留下深刻印象 - 总是一种做你想做的事的方法。HTH 其他人的某个时候。

    • 3

相关问题

  • 如何将 ogv 文件转换为 mp4?

  • 将音频文件添加到 mkv 视频

  • ProRes 编码和解码?

  • 我怎样才能让 ffserver 工作?

  • 如何在不自己重新编译 ffmpeg 的情况下使用 ffmpeg 的“-vf”/“-vfilters”选项?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve