Стереопередача звукозапису MKV 5.1 в ручному гальмі призводить до того, що "Центр" є правим каналом, а лівий канал практично нічого


2

Тому я успішно використовую Handbrake (версія 1.1.2) для перетворення багатьох великих MKV-файлів у менші відеофайли, сумісні з iOS та macOS. Я можу деякий час відтворюватись на своїх iPhone та MacBook Air, не маючи жодних проблем до цього конкретного фільму.

Коли я перетворюю її за допомогою Handbrake за допомогою стандартних "загальних" параметрів, здавалося б, будь-якого типу - швидкий, дуже швидкий, HQ або Super HQ - звук, змішаний з 5.1 аудіо, призводить до дивного стереосистеми, по суті весь звук йде в потрібний канал і На лівому каналі, здається, є якийсь канал, який є просто - за відсутності кращого терміну - фоновими залишками. Досить лише звуку, щоб не мовчати, але абсолютно не звучить музика, діалог чи щось.

Я можу відтворити його на VLC (версія 3.0.6) на моєму MacBook Air, і я отримую такий же незвичайний звук через свої динаміки; важкий правий ледве нічого. Але якщо я встановив звук VLC на "Навушники" ... Ого! Це стає звичайним стерео-знімком.

Що відбувається і що я можу зробити, щоб правильно зменшити це? Я сподіваюся, що я можу це зробити в Handbrake, але якщо ні, я припускаю, що мені доведеться витягнути 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
Я підозрюю, що вхід має нестандартний макет каналу. Коли це станеться, демуксер позначить його стандартним макетом з однаковою кількістю каналів. Під час повторної матриці на інший макет каналу, очевидно, вибране рематрикс буде несправним. Чи знаєте ви точне розташування каналу на вході?
Gyan

@Gyan Має сенс. Поняття не маю, що таке вихідний макет вводу, але чи все-таки мені доведеться аналізувати AC3 з командного рядка чи навіть жити? Задумайтесь, чи не знайдеться там інструмент, який міг би дозволити змішувати вхідні дані, щоб я міг, наприклад, просто встановити прапорці, щоб побачити, що таке трек.
JakeGould

@Gyan Щойно опублікував відповідь, яка відображає кроки, які я вжив, щоб виправити це. Якщо ви знаєте про чистіший спосіб зробити це, будь ласка, не соромтеся опублікувати відповідь.
JakeGould

Відповіді:


2

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

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

0

Канал "Центр" був насправді "правильним" та безвізовим.

Помінявши їх, ви отримаєте правильний, нормально звуковий файл 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

Це спрацювало! Звук чудовий завдяки звичайному “стерео” відтворенню в VLC, а також при my_movie_fixed.mkvперетворенні через Handbrake.

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

mkvpropedit my_movie_fixed.mkv --edit track:a2 --set name=English --set language=en
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.