我想将文件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
发布于 2021-04-06 04:35:52
音频流的排序可以使用FFmpeg的map
和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指南disposition
选项的用法和可用选项。发布于 2021-09-23 10:52:57
我通过问谷歌一个高度相关但略有不同的问题找到了这条线索--我现在有了答案。所以,也有可能是和我的问题相同的另一个人也会在这里结束,这可能会在某个时候帮助其他人。
我们的“智能”电视有一个集成的Mp4播放器,它将播放MP3或AAC音轨。我有一个负载(80左右)的文件,其中有一个AAC原声-但这些播放在痛苦的低音频音量(电视音量100%是远远不够响亮,以听到很多对话)。随着老人在家里有听力问题,没有嵌入的潜艇,这使得视频无法观看。
所以,我想要一种使用ffmpeg的方法:
我本可以先分解现有的流,然后创建新的处理过的音频,然后再将它们全部屏蔽,但是我确信ffmpeg可以作为一个命令行来完成--当您有80个文件要做时,这将使进程更加整洁和更快。没让我失望。
在上面的答案和我找到的其他东西的帮助下,这是我最后得到的命令行--工作愉快。
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总是给人留下深刻的印象--总是做你想做的事。其他人的时间。
https://askubuntu.com/questions/1329432
复制相似问题