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


10

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

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

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

Answers:


14

使用FFmpeg,这应该非常简单。确保从他们的下载页面下载了一个静态版本,并且不要使用过旧的Ubuntu版本。

这是命令:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -map 0:a:0 -c copy output.mkv

这是做什么的-map

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

这意味着我们将视频比特流保留为第一流,然后获取第二音频流,然后再获取第一音频流,从本质上讲,我们正在交换音频流。

使用该-c copy选项可确保位流被复制且未重新编码。

FFmpeg Wiki上提供了一些有关如何使用该-map选项的示例。


如果只有一个输入,那么您实际上可以忽略输入ID :-map v:0 -map a:1 -map a:0
甜点,

7

只需使用mkvtool即可避免,重新打包,重新编码...浪费时间。

mkvpropedit -v movie.mkv -v --edit track:2 --set track-number=3 --edit track:3 --set track-number=2

这应该足以交换流。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.