03.09. Расширенные возможности аудио
3.9.1. Окружающее/Многоканальное[Surround/Multichannel] воспроизведение
Большинство DVD и многие другие файлы содержат окружающий звук. MPlayer поддерживает воспроизведение такого звука, но не задействует его по-умолчанию, поскольку стерео оборудование более распространено. Для воспроизведения файла с более чем двумя каналами звука, используйте опцию -channels. Например, для воспроизведения DVD со звуком 5.1:
mplayer dvd://1 -channels 6
Имейте ввиду, что несмотря на название "5.1" на самом деле присутствует шесть независимых каналов. Если у вас есть соответствующее оборудование, вы спокойно можете добавить опцию channels в конфигурационный файл ~/.mplayer/config MPlayer'а. Например, для установки по умолчанию квадрофонического[quadraphonic] воспроизведения, добавьте такую строку:
channels=4
MPlayer будет выводить четырехканальный звук, если все четыре есть в проигрываемом файле.
По-умолчанию, MPlayer не дублирует никакие каналы, как и большинство звуковых драйверов. Если вы хотите, сделайте это самостоятельно:
mplayer filename
-af channels=2:2:0:1:0:0
Объяснения ищите в разделе копирование каналов.
DVD, как правило, имеют окружающий звук, кодированный в AC-3 (Dolby Digital) или DTS (Digital Theater System[система цифрового кинотеатра]) формате. Некоторое современное аудио оборудование способно самостоятельно декодировать эти форматы. MPlayer может быть сконфигурирован, чтобы передавать данные без их декодирования. Это работает только для наличие в вашей звуковой карте разъема S/PDIF (Sony/Philips Digital Interface[цифровой интерфейс Sony/Philips]).
Если ваше оборудование может декодировать и AC-3, и DTS, выможете спокойно задействовать передачу для обоих форматов. В противном случае включайте передачу только того формата, который поддерживается оборудованием.
Чтобы включить передачу из командной строки:
-
только для AC-3, используйте -ac hwac3
-
только для DTS, используйте -ac hwdts
-
для AC-3 и DTS, используйте -afm hwac3
Чтобы включить передачу в файле настроек MPlayer:
-
только для AC-3: ac=hwac3,
-
только для DTS: ac=hwdts,
-
для AC-3 и DTS: afm=hwac3
Заметьте, что в конце ac=hwac3, и ac=hwdts, присутствует запятая (","). В этом случае MPlayer вернется к кодеку, который он обычно использует, при воспроизведении файла, не содержащего звука AC-3 или DTS. afm=hwac3 запятой не требует; Когда указано семейство аудио, MPlayer вернется к нужному кодеку так или иначе.
Передатчики цифрового ТВ (такие как DVB и ATSC) и некоторые DVD, обычно имеют аудио потоки MPEG (в частности MP2). Некоторые аппаратные MPEG декодеры, такие как полнофункциональные DVB карты и DXR2 адаптеры имеют встроенную возможность декодирования этого формата. MPlayer может быть настроен для передачи аудио данных без из декодирования.
Для использования этого кодека:
mplayer -ac hwmpa
***TODO***
Этот раздел пока не написан, и не может быть завершен, пока кто-нибудь не предоставить нам образцы файлов для тестирования. Если у вас есть matrix-кодированные файлы, знаете где их можно достать или имеете информацию, которая может быть полезна, отошлите сообщение в рассылку MPlayer-DOCS. Укажите в теме письма [matrix-encoded audio].
Если не появятся файлы или какая-нибудь информация, этот раздел будет удален.
Полезные ссылки:
MPlayer содержит плагин HRTF (Head Related Transfer Function), основанный на проекте MIT откуда взяты измерения от микрофонов, вмонтированных в макет человеческой головы.
Хотя точная имитация системы окружающего звука[surround system] невозможна, MPlayer'овский плагин HRTF производит более пространственный окружающий звук на 2-х канальных наушниках. Обычное сведение, просто объединяет канали в два; кроме объединения каналов, hrtf создает хитрое эхо, слегка увеличивает разделение стерео, и меняет громкость некоторых частот. Лучше ли звучит HRTF, зависеть от исходного звука, и является делом личного вкуса, но его определенного стоит попробовать.
Для воспроизведения DVD с HRTF:
mplayer dvd://1 -channels 6 -af hrtf
hrtf работает хорошо тоько с 5-ю или 6-ю каналами. Также, hrtf тербуется 48 kHz звук. DVD аудио уже kHz, но если у вас есть файл, который вы хотите воспроизвести при помощи hrtf , с другой частотой сэмплирования, необходимо его ресэмплировать[resample]:
mplayer filename
-channels 6 -af resample=48000,hrtf
К сожалению, нет стандарта, описывающего порядок следования каналов. Порядки, указанные ниже, таковые из AC-3 и довольно типичны; попробуйте их и увидите совпадают ли они с вашим источником. Каналы нумеруются с нуля.
mono[моно]
-
center[центральный]
stereo[стерео]
-
left[левый]
-
right[правый]
quadraphonic[квадрофонический]
-
left front[левый передний]
-
right front[правый передний]
-
left rear[левый задний]
-
right rear[правый задний]
surround 4.0[окружение 4.0]
-
left front[левый передний]
-
right front[правый передний]
-
center rear[центральный задний]
-
center front[центральный передний]
surround 5.0[]окружение 5.0
-
left front[левый передний]
-
right front[правый передний]
-
left rear[левый задний]
-
right rear[правый задний]
-
center front[центральный передний]
surround 5.1[окружение 5.1]
-
left front[левый передний]
-
right front[правый передний]
-
left rear[левый задний]
-
right rear[правый задний]
-
center front[центральный передний]
-
subwoofer[сабвуфер]
Опция -channels используется для запроса количества каналов у аудио декодера. Некоторые аудио кодеки используют указанное количество каналов для определения необходимо ли сведение каналов. Заметьте, что это не всегда отражается на количестве выходных каналов. Например, используя -channels 4 для проигрывания стерео MP3 файла будет по-прежнему выводить звук на два канала, поскольку MP3 кодек не создает дополнительных каналов.
Аудио плагин channels может использоваться для создания или удаления каналов, и полезен для управления количеством каналов, отсылаемых на звуковую карту. Смотрите следующие разделы для получения информации о манипуляции каналами.
Моно звук намного лучше звучит, при воспроизведении на двух колонках - особенно при использовании наушников. Аудиофайлы, реально имеющие один канал, автоматически проигрываются через две колонки; к сожалению, множество файлов с моно звуком кодированы как стерео с тишиной в одном из каналов. Простейший и безопасный способ воспроизведения одинакового звука на обеих колонках состоит в использовании плагина extrastereo:
mplayer filename
-af extrastereo=0
Он усредняет оба канала, делая каждый в два раза тише изначального. В следующих разделах приводятся другие способы сделать то же самое без уменьшения громкости, но они сложнее и требуют указания различных опций в зависимости от того, какой канал остается. Если вам действительно требуется управлять громкостью, бутет проще поэкспериментировать с плагином volume и определить верное значение. Например:
mplayer filename
-af extrastereo=0,volume=5
Плагин channels может переместить любой или все каналы. Установка всех подопций плагина channels не так проста и требует определенной аккуратности.
-
Определитесь, сколько выходных каналов вам необходимо. Это первая подопция.
-
Посчитайте количество перемещаемых каналов. Это вторая подопция.Каждый канал может быть перемещен в несколько отличных каналов одновременно, но учтите, что исходный канал (даже при перемещении в одно место) будет пуст, пока в него не переместится какой-либо другой. Для копирования канала, оставляя исходный неизменным, просто переместите канал одновременно в требуемый и исходный. Например:
канал 2 --> канал 3 канал 2 --> канал 2
-
Запишите копии каналов в виде пары подопций. Заметьте, что первый канал - это 0, второй - 1 и т.д. Порядок следования значений не имеет, пока они правильно сгруппированы в пары
исходный:результирующий
.
Пример: один канал на две колонки
Это пример другого способа воспроизвести один канал на обе колонки. В нем предполагается, что левый канал должен воспроизводиться, а правый надо отбросить. Выполняем шаги, описанные выше:
-
Для создания по каналу на каждую из колонок, первая подопция должна быть 2.
-
Левый канал надо переместить на правый и на себя, чтобы он не оставался пуст. Всего два перемещения, делаем вторую подопцию тоже равной "2".
-
Для перемещения левого канала (канал 0) в правый (канал 1) пара подопций имеет вид "0:1", "0:0" перемещает левый канал на себя.
Собираем все вместе:
mplayer filename
-af channels=2:2:0:1:0:0
Преимущество этого примере перед extrastereo состоит в том, что громкость каждого канала такая же как у исходного. Недостаток заключается в необходимости изменить подопции на "2:2:1:0:1:1", если желаемый канал - правый. К тому же его труднее запомнить и набрать.
Пример: левый канал на две колонки (сокращение)
На самом деле есть более простой способ использования плагина channels для воспроизведения левого канала на обеих колонках:
mplayer filename
-af channels=1
Второй канал отбрасывается и, при отсутствии других подопций, остается единственным. Драйвер звуковой карты автоматически воспроизводит одноканальный звук на обеих колонках. Но это сработает только если желаемый канал - левый.
Пример: дублирование передних каналов на задние
Другая обычная операция - это дублирование передних каналов и воспроизведение их на задних колонках при квадрофонической настройке.
-
Выходных каналов должно быть четыре. Первая подопция равна "4".
-
Каждый из передних каналов надо переместить на соответствующий задний и на себя. Это четыре перемещения, так что вторая подопция равна "4".
-
Левый передний (канал 0) надо переместить на левый задний (канал 2): "0:2". Левый передний также надо переместить на себя: "0:0". правый передний (канал 1) перемещается на правый задний (канал 3): "1:3", и на себя: "1:1".
Собираем все и получаем:
mplayer filename
-af channels=4:4:0:2:0:0:1:3:1:1
Плагин pan пожет микшировать каналы в указанных пользователем пропорциях. Он может делать все, что channels, и даже больше. К сожалению, подопции намного сложнее.
-
Определите со скольки каналами будете работать. Вам необходимо указать это при помощи -channels и/или -af channels. Дальнейшие примеры покажут когда какую использовать.
-
Решите, сколько каналов скормить pan (дополнительные декодированные каналы отбрасываются). Это первая подопция, она также определяет сколько каналов готовится к выводу).
-
Оставшиеся подопции указывают какая часть каждого входного канала микшируется в в каждый выходной. Это самая сложная часть. Для решения задачи, разделите подопции на несколько наборов, по одному на каждый выходной канал. Каждая подопция в наборе относится к входному каналу.
pan принимает значения от 0 до 512, давая от 0% до 51200% громкости исходного канала. Будьте осторожны, используя значения больше 1, если вы превысить диапазон сэмплинга вашей звуковой карты, вы услышите противный треск и скрежет. Если хотите, можете вслед за pan указать ,volume для задействования обрезки, но лучше держать значения pan достаточно низкими, чтобы не требовалось обрезание.
Пример: один канал на две колонки
Это еще один пример воспроизведения левого канала на двух колонках. Следуя инструкциям выше:
-
pan должен выдать два канала, т.о. первая подопция равна "2".
-
Поскольку входных каналов два, будет два набора подопций. Так как выходных каналов тоже два, то будет по две подопции в каждом наборе. Левый канал из файла должен перейти с полной громкостью в новые левый и правый. Таким образом, первый набор подопций будет "1:1". правый канал должен быть отброшен, поэтому второй набор равен "0:0". Любые значения 0 в конце могут быть опущены, но для более легкого понимания мы их оставим.
Соединение опций дает:
mplayer filename
-af pan=2:1:1:0:0
Если вместо правого канала нужен левый, подопции для pan будут "2:0:0:1:1".
Пример: левый канал на две колонки (сокращение)
Как и с channels, существует сокращенный вариант, который работает только для левого канала:
mplayer filename
-af pan=1:1
Поскольку pan имеет только один входной канал (остальные отбрасываются), будет только одна подопция, указывающая, что единственный канал получает 100% собственной громкости.
Пример: сведение 6-канального PCM
Декодер MPlayer'а для 6-канального PCM не способен сводить каналы. Здесь описан способ сведения PCM, используя pan:
-
Количество выходных каналов равно 2, значит первая подопция равна "2".
-
С шестью входными каналами будем иметь шесть наборов подопций. К счастью, поскольку мы беспокоимся о выводе только первых двух, достаточно создать два набора; оставшиеся можно опустить. Имейте ввиду, что не все многоканальные имеют одинаковый порядок каналов. пример показывает как свести файл с порядком как у AC-3 5.1:
0 - передний левый 1 - передний правый 2 - задний левый 3 - задний правый 4 - центральный передний 5 - сабвуфер
В первом наборе указаны проценты от исходной громкости, в соответствующем порядке, которую каждый выходной канал получит от переднего левого канала: "1:0". Правый передний должен перейти в правый: "0:1". То же для задних: "1:0" и "0:1" Центральный должен попасть в оба с половинной громкостью: "0.5:0.5", и сабвуфер переходит в оба канала с полной громкостью: "1:1".
Все вместе:
mplayer 6-channel.wav
-af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1
Проценты, указанные выше всего лишь пример. подстраивайте их как вам удобно.
Пример: Воспроизведение звука 5.1 на больших колонках без сабвуфера
Если у вас есть пара огромных передних колонок, нет надобности тратиться на сабвуфер для полноценной системы 5.1. Если использовать -channels 5 для запроса к liba52 на декодирование 5.1 аудио в 5.0, канал сабвуфера просто отбрасывается. Если вы сотите самостоятельно распределить канал сабвуфера, то потребуется ручное сведение при помощи pan:
-
Поскольку pan надо анализировать все шесть каналов, укажите -channels 6, чтобы liba52 декодировал их все.
-
pan выводит только пять каналов, первая подопция равна 5.
-
Шесть входных каналов означает шесть наборов по пять подопций в каждом.
-
Левый передний дублируется только на себя: "1:0:0:0:0"
-
То же для правого переднего: "0:1:0:0:0"
-
То же для левого заднего: "0:0:1:0:0"
-
И то же для правого заднего: "0:0:0:1:0"
-
Центральный передний, тоже: "0:0:0:0:1"
-
И, наконец, мы должны решить что же делать с сабвуфером, например, половина на передний правый и половина на передний левый: "0.5:0.5:0:0:0"
-
Собирая все подопции месте, получаем:
mplayer dvd://1
-channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0
Некоторые звуковые дорожки без усиления слишком тихие для комфортного прослушивания. Это становится проблемой, если звуковое оборудование не способно усиливать сигнал. Опция -softvol указывает MPlayer'у использовать встроенный микшер. После этого вы можете использовать клавиши подстройки громкости (по-умолчанию 9 и 0) чтобы достичь значительно более громкого звучания. Заметьте, что это не исключает использования микшера вашей карты; MPlayer всего лишь усиливает сигнал перед отправкой его на звуковую карту. Следующим пример может являться неплохим началом:
mplayer quiet-file
-softvol -softvol-max 300
Опция -softvol-max указывает максимально допустимый уровень звука в процентах от исходного. Например, -softvol-max 200 позволит увеличивать громкость вдвое по сравнению с оригинальным звуком. Использование больших значений с-softvol-max; высокий уровень громкости не будет достигнуть без использования клавиш регулирования громкости. Единственный минус больших значений заключается в том, что, поскольку MPlayer регулирует громкость в процентах от максимума, вы не будете иметь той же точности при использовании клавиш регулирования громкости. Используйте меньшее значение -softvol-max и/или укажите -volstep 1 если нужна повышенная точность.
Опция -softvol работает, управляя аудио плагином volume. Если вам надо воспроизвести файл с определенной громкостью от начальной, можете указать volume вручную:
mplayer quiet-file
-af volume=10
Будет воспроизведен файл в усилением в 10 децибел. Будьте осторожны, используя плагин volume - вы можете легко повредить ваши уши слишком громким звуком. Начните с маленьких значений и постепенно увеличивайте, пока не почувствуете, что достаточно. Также, если указать черезчур высокие значения, volume может потребоваться обрезать звук, чтобы избежать отправления на карту данных, превышающих допустимые значение; это приведет к искажению звука.