如何在 .mkv 或 .mp4 中重新映射 AC3 流的通道?(ffmpeg,3f2m/lfe -> 3f2r/lfe)

如何在 .mkv 或 .mp4 中重新映射 AC3 流的通道?(ffmpeg,3f2m/lfe -> 3f2r/lfe)

这是我的问题,我已经将相当多的 DVD 和一些蓝光光盘备份为 .mkv 文件,用于存档目的,以及用于我的 plex 服务器。我使用了:

  • x264 用于视频
  • ac3 用于音频(为了兼容性,几乎所有设备都支持杜比数字,但大量电视或家庭影院设置不支持 DTS 和无损编解码器)。

到目前为止一切顺利。然而,过了一段时间,我发现我的转码器创建的文件的音频设置如下:

  • 3F2M/LFE(3 前,2 中),在 ffmpeg 中称为“5.1(侧面)

代替:

  • 3F2R/LFE(3 前置,2 后置),称为“5.1“不带括号内的边。

这导致我的环绕立体声设置出现问题。

为了解决这个问题,我尝试在终端中使用 ffmpeg 重新映射频道,但结果并不理想。我不想重新转码所有内容,所以我只想将 SL 频道换成 BL 频道,将 SR 频道换成 BR 频道。

当我跑步时ffprobe filename.mkv我得到:

ffprobe version 4.1 Copyright (c) 2007-2018 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_3 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libaom --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libspeex --enable-videotoolbox
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, matroska,webm, from 'filename.mkv':
  Metadata:
    encoder         : libebml v0.7.7 + libmatroska v0.8.1
    creation_time   : 2018-06-30T14:44:07.000000Z
  Duration: 03:48:17.82, start: 0.000000, bitrate: 5020 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x800, SAR 1:1 DAR 12:5, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s (default)
    Stream #0:2(eng): Subtitle: subrip (default)

我曾尝试过:

ffmpeg -i filename.mkv -filter_complex "channelmap=map=FL-FL|FR-FR|FC-FC|LFE-LFE|SL-BL|SR-BR:channel_layout=5.1" output.mkv

但这也开始重新编码视频,并改变音频编解码器。

因此,我接下来尝试:

ffmpeg -i filename.mkv -codec:0 copy -acodec:1 copy -filter:1 "channelmap=map=FL-FL|FR-FR|FC-FC|LFE-LFE|SL-BL|SR-BR:channel_layout=5.1" newfilename.mkv 

我得到了:

Filtergraph 'channelmap=map=FL-FL|FR-FR|FC-FC|LFE-LFE|SL-BL|SR-BR:channel_layout=5.1' was defined for audio output stream 0:1 but codec copy was selected.
Filtering and streamcopy cannot be used together.

有没有办法不转码,直接将左右声道切换为后置声道?我真的不想再花无数个小时转码了…… :(

谢谢!

相关内容