2

Поэтому я успешно использовал Handbrake (версия 1.1.2), чтобы конвертировать много больших MKV-файлов в меньшие видеофайлы, совместимые с iOS и macOS, которые я могу воспроизводить на своем iPhone и MacBook Air некоторое время, не испытывая особых проблем до этого конкретного фильма.

Когда я конвертирую его с помощью Handbrake, используя стандартные «Общие» настройки, по-видимому, любого типа - Fast, Very Fast, HQ или Super HQ - при понижении звука из звука 5.1 получается странное стерео, по существу, весь звук направляется на нужный канал, и левый канал, кажется, имеет какой-то канал, который просто - из-за отсутствия лучшего термина - фоновые остатки. Достаточно звука, чтобы не молчать, но совершенно не слышно ни музыки, ни диалогов, ни чего-либо еще.

Я могу воспроизвести его на VLC (версия 3.0.6) на моем MacBook Air, и через динамики я получаю такой же странный звук; тяжелое право, почти ничего не осталось. Но если я установлю звук VLC на «Наушники»… Вау! Это становится обычным стереофоническим микшированием.

Что происходит и что я могу сделать, чтобы должным образом микшировать это? Я надеюсь, что смогу сделать это с помощью ручного тормоза, но если нет, то я предполагаю, что мне придется извлечь AC3 из MKV, смешать его в каком-нибудь другом инструменте и затем выбросить обратно в MKV?

Детали звуковой дорожки здесь, используя ffmpeg -i:

Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s (default) (forced)
Metadata:
  title           : English
  BPS-eng         : 384000
  DURATION-eng    : 01:36:42.624000000
  NUMBER_OF_FRAMES-eng: 181332
  NUMBER_OF_BYTES-eng: 278525952

Подробная информация о звуковой дорожке здесь, используя mkvmerge --identify :

Track ID 0: video (MPEG-4p10/AVC/h.264)
Track ID 1: audio (AC-3)

Детали звуковой дорожки здесь, используя mkvinfo :

| + Track
|  + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
|  + Track UID: 3241101187
|  + Track type: audio
|  + Forced track flag: 1
|  + Codec ID: A_AC3
|  + Default duration: 00:00:00.032000000 (31.250 frames/fields per second for a video track)
|  + Name: English
|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 6

Подробности аудио дорожки здесь с использованием exiftool :

Track Number                    : 2
Track Type                      : Audio
Track Forced                    : Yes
Audio Codec ID                  : A_AC3
Default Duration                : 32 ms
Track Name                      : English
Audio Sample Rate               : 48000
Audio Channels                  : 6

2 ответа2

2

После того, как вы узнаете отображение каналов, вы можете просто использовать фильтр каналов , пропуская промежуточные файлы.

ffmpeg -i my_movie.mkv -c:v copy -c:s copy -af "channelmap=0|2|1|3|4|5" -c:a ac3 out.mkv
1

Канал «Центр» был действительно «Правильный» и наоборот.

Замена их приводит к правильно сбалансированному, нормально звучащему файлу AC3.

Я обнаружил это, основываясь на комментарии Гаяна, и решил, что могу это исправить, только фактически отключив отдельные моно-треки от AC3, прослушав каждый, а затем восстановив AC3 для исправления звукового макета. Таким образом, это открытие и решение этого мини-беспорядка.

Тем не менее, все шаги, которые я описал ниже, работали для меня, но если кто-то знает более понятный способ сделать это в одной команде, пожалуйста, не стесняйтесь публиковать в качестве ответа. Я воздам вам славу, потому что это буквально самая сложная манипуляция с FFmpeg и MKV, которую я когда-либо делал, так что это был процесс обучения.

Сначала я использовал mkvmerge чтобы определить, какие дорожки есть в my_movie.mkv:

mkvmerge --identify my_movie.mkv

Зная, что я извлек файл AC3 с помощью FFmpeg в файл с именем my_movie.ac3:

ffmpeg -i my_movie.mkv -map 0:1 -c:a copy my_movie.ac3

Затем я взял этот my_movie.ac3 и разбил его на 6 моно-треков:

ffmpeg -i my_movie.ac3 -map_channel 0.0.0 front_left.wav -map_channel 0.0.2 front_right.wav -map_channel 0.0.1 front_center.wav -map_channel 0.0.3 back_left.wav -map_channel 0.0.4 back_right.wav -map_channel 0.0.5 lfe.wav

Затем я просто скомбинировал эти моно-треки в новый файл AC3 под названием my_movie_fixed.ac3:

ffmpeg -i front_left.wav -i front_right.wav -i front_center.wav -i lfe.wav -i back_left.wav -i back_right.wav -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[a]" -map "[a]" my_movie_fixed.ac3

Затем я добавил вновь созданный my_movie_fixed.ac3 в my_movie.mkv и вызвал получившийся файл my_movie_fixed.mkv:

ffmpeg -i my_movie.mkv -i my_movie_fixed.ac3 -map 0 -map 1 -c copy my_movie_fixed.mkv

Это сработало! Звук великолепен благодаря обычному воспроизведению «Stereo» в VLC, а также при преобразовании my_movie_fixed.mkv помощью ручного тормоза .

Тем не менее, я также скорректировал спецификацию метаданных для дорожки и установил ее в качестве звуковой дорожки по умолчанию, используя mkvpropedit следующим образом:

mkvpropedit my_movie_fixed.mkv --edit track:a2 --set name=English --set language=en

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .