Я подключаю свой ПК к домашнему кинотеатру через SPDIF, поэтому при просмотре видеофайлов, использующих каналы AAC 5.1, он микшируется с понижением до стерео, а каналы объемного звучания теряются.
Я хотел бы иметь возможность преобразовать все выходные сигналы 5.1 AAC в 5.1 AC3, чтобы мой HT правильно воспроизводил 6 дискретных каналов.
Мой нынешний подход заключается в использовании avconv
для преобразования аудиопотоков моих файлов следующим образом:
avconv -i <inputfile> -codec copy -codec:a ac3_fixed -b:a 448k <outputfile>
Это работает, но у него есть несколько недостатков:
Хотя преобразование работает нормально, есть несколько проблем: громкость огромна , громко, как я никогда раньше не видел, и я боюсь, что некоторые метаданные теряются при преобразовании.
[ 116]Я должен запускать это для каждого видео, которое хочу посмотреть. Это занимает время и тратит много места на жестком диске.
Итак, есть ли решение, которое устраняет хотя бы один из этих недостатков?
Возможные подходы:
Установите OS (импульсный звук?) В кодировать многоканальный PCM в AC3 на лету? (это было бы поразительно , так как это было бы не только с видео, но и с играми.
) Исправьте мою командную строку с некоторыми умными параметрами
Спасибо!
Вы можете установить кодеки для отдельных потоков в avconv с помощью -c: n - где n - номер потока. Предположим, что ваш поток AAC - это поток 2 (то есть третий поток в контейнере):
avconv -i input.mkv -c copy -c:2 ac3_fixed -b:2 448k output.mkv
Вот быстрый & amp; грязный скрипт для поиска номера потока потока AAC и передачи его в avconv:
#!/bin/bash
foo=$(avconv -i "$1" 2>&1 | grep aac | grep 5.1 | sed -e 's/ Stream #0.//' -e 's/(.*//')
avconv -i "$1" -c copy -c:$foo ac3_fixed -b:$foo 448k "AC3-$1"
exit 0
Это не будет работать, если у вас более одного потока 5.1 AAC, и будет работать только с именами файлов, которые есть пробелы, если вы их цитируете. Чтобы использовать его, вставьте этот фрагмент кода в gedit & amp; сохраните его как 'aac-only-to-ac3' где-нибудь в вашей переменной $ PATH (например, ~ / bin). Убедитесь, что вы делаете его исполняемым.
Затем, чтобы использовать сценарий,
aac-only-to-ac3 input.mkv
и сделать каждый MKV в каталоге
for i in *mkv; do aac-only-to-ac3 "$i"; done