gpt4 book ai didi

FFMpeg - 将所有音频流从 MKV 转换为 MP4

转载 作者:行者123 更新时间:2023-12-04 22:46:17 27 4
gpt4 key购买 nike

我有 MKV 文件,其中包含:

Stream #0:0(eng): Video: h264 (High)
Stream #0:1(pol): Audio: ac3
Stream #0:2(eng): Audio: dts (DTS)
Stream #0:3(pol): Subtitle: subrip
Stream #0:4(eng): Subtitle: hdmv_pgs_subtitle

我想省略字幕(-sn 选项),复制视频并将音频流编码为 AAC。

我尝试了几种不同的命令,输出文件总是相同的(2 个音频流,但都是来自第一个音频流的声音)。

这是我的命令:

ffmpeg -i input.mkv -sn -map 0:a? -map 0:v -c:v copy -c:a? aac output.mp4 
ffmpeg -i input.mkv -sn -map 0 -c:v copy -c:a aac output.mp4
ffmpeg -i input.mkv -sn -map 0:? -c:v copy -c:a aac output.mp4

几乎一切正常,但在输出文件中我有 2 个名称为 (pol) 和 (eng) 的音频流,但两者都是来自 (pol) stream0:1 的声音。

我应该使用什么命令来转换音频流以实现两个 a 音频流,其中将是 pol 和 eng 声音(两者都不是 pol)。有时输入文件只有 1 个音频流,所以命令行应该是通用的,我猜 ffmpeg 映射带有 ? 字符。

最佳答案

如果 MKV 文件中的流与 MP4 兼容

您可以使用 stream copy 重新混合模式(-c 复制)。这避免了重新编码。

ffmpeg -i input.mkv -map 0 -c copy output.mp4
  • -map 0 从输入 #0 中选择所有流,即 input.mkv(注意 ffmpeg 从 0 开始计数).否则默认 stream selection使用的行为只会为每种流类型选择一个流。

  • ffmpeg 会告诉您流是否与输出容器格式不兼容,并显示一条错误消息:codec not currently supported in container

  • 目前最典型的兼容格式有:H.264视频、H.265/HEVC视频、AAC音频。

排除不兼容的流

您可以使用负映射。包含除字幕以外的所有内容的示例:

ffmpeg -i input.mkv -map 0 -map -0:s -c copy output.mp4

参见 -map option documentation了解更多信息。

重新编码不兼容的流

此示例流复制除了转换为 AAC 的音频之外的所有内容:

ffmpeg -i input.mkv -map 0 -c copy -c:a aac output.mp4

关于FFMpeg - 将所有音频流从 MKV 转换为 MP4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54659242/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com