Так что это моя проблема, я скопировал довольно много DVD-дисков и несколько дисков Blu-Ray в файлы .mkv для архивных целей и для своего плекс-сервера. Я использовал:

  • x264 для видео
  • AC3 для аудио (для совместимости Dolby Digital поддерживается практически всем, 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.

Есть ли способ просто поменять местами боковые каналы без транскодирования? Я действительно не хотел бы тратить бесчисленные часы на перекодировку снова ... :(

Спасибо!

0