如何在基于 Linux 的系统中交换 MKV 中的第一个和第二个音频流?

use*_*723 13 linux video-editing matroska

我正在使用 plex。Plex 似乎忽略了默认音频流(在 Roku 上),而只使用第一个音频流。这是我使用 mkvpropedit 进行的测试。

由于 Plex 目前不支持在 LAN 外的客户端上更改音频源,我想更改一些文件,以便当前的第二个音频源是第一个?

在基于 Linux 的系统(如 Ubuntu)上的 MKV 中交换音频流的最佳方法是什么?

slh*_*hck 18

使用FFmpeg,这应该相当简单。确保您从他们的下载页面下载了一个静态版本,并且不要使用相当旧的 Ubuntu 存储库版本。

这是命令:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -map 0:a:0 -c copy output.mkv
Run Code Online (Sandbox Code Playgroud)

这是-map它的作用:

  • 冒号前的第一部分是输入 ID。由于我们只有一个输入,它是0.
  • 第二部分指定流的类型,video 或aaudio。这是可选的,但最好也指定类型,以防视频和音频流未正确复用。
  • 第三部分是输入流的ID。0将是第一个和1第二个,即第一个视频流和第二个和第一个音频流。
  • 的顺序-map选择确定在输出文件中的流的顺序。

这意味着我们将视频比特流作为第一个流,然后使用第二个音频流,然后是第一个——本质上,我们正在交换音频流。

使用该-c copy选项可确保比特流被复制而不是重新编码。

可以在 FFmpeg wiki 上找到有关如何使用该-map选项的一些示例。


小智 8

只需使用 mkvtool 来避免、重新打包、重新编码......浪费时间。

mkvpropedit -v movie.mkv -v --edit track:2 --set track-number=3 --edit track:3 --set track-number=2
Run Code Online (Sandbox Code Playgroud)

这应该足以交换流。