首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用FFmpeg更改默认音频轨道?

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

Ask Ubuntu用户
提问于 2021-04-05 17:11:59
回答 2查看 9.8K关注 0票数 7

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

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

有关该影片的资料如下:

代码语言:javascript
运行
复制
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
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2021-04-06 04:35:52

音频流的排序可以使用FFmpeg的mapdisposition选项来完成。这方面的最佳语法可以说是:

代码语言:javascript
运行
复制
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:这将我们所需的音频流(英语)设置为默认设置。如果这已经设置在另一个输入音频流上,则非常有用。

这在我的系统上生成的测试文件上运行得很好,对你的系统也应该很好.

Notes.

票数 13
EN

Ask Ubuntu用户

发布于 2021-09-23 10:52:57

我通过问谷歌一个高度相关但略有不同的问题找到了这条线索--我现在有了答案。所以,也有可能是和我的问题相同的另一个人也会在这里结束,这可能会在某个时候帮助其他人。

我们的“智能”电视有一个集成的Mp4播放器,它将播放MP3或AAC音轨。我有一个负载(80左右)的文件,其中有一个AAC原声-但这些播放在痛苦的低音频音量(电视音量100%是远远不够响亮,以听到很多对话)。随着老人在家里有听力问题,没有嵌入的潜艇,这使得视频无法观看。

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

  1. 保留原来的AAC,还添加了一个MP3音轨,衍生自AAC,但与响度处理,使它适合看电视。
  2. 降级AAC音轨为第二个音频流,而使新的MP3音频默认。在实验过程中,我发现这个特定的电视播放器(松下)总是默认为第一个音频流--不管哪个是默认的。
  3. 作为蛋糕上的锦上添花,我想给每个音频流一个适当的元数据标题。

我本可以先分解现有的流,然后创建新的处理过的音频,然后再将它们全部屏蔽,但是我确信ffmpeg可以作为一个命令行来完成--当您有80个文件要做时,这将使进程更加整洁和更快。没让我失望。

在上面的答案和我找到的其他东西的帮助下,这是我最后得到的命令行--工作愉快。

代码语言:javascript
运行
复制
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总是给人留下深刻的印象--总是做你想做的事。其他人的时间。

票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1329432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档