Так что это моя проблема, я скопировал довольно много 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.
Есть ли способ просто поменять местами боковые каналы без транскодирования? Я действительно не хотел бы тратить бесчисленные часы на перекодировку снова ... :(
Спасибо!