Разложение многоканального звука на 6 отдельных монодорожек при помощи mplayer (на примере ac-3 (E-AC-3 / Dolby Digital Plus))

При обработке многоканального звука возникает потребность располагать отдельно всеми моноканалами в PCM (WAV) — формате.
В подобной ситуации можно воспользоваться mplayer с фильтром pan.
В первую очередь, укажем, что нам нужен шестиканальный звук, из которого мы и будем отбирать по одной дорожке параметром -channels 6 .

Запись вывода в wav-файл будет осуществляться опцией -ao pcm:file=имя_файла

Аудиофильтр pan указывает на расположение и силу каналов. Параметры записываются через двоеточие: первый параметр указывает на число каналов (в нашем случае 1), а в последующих — сила каждого из исходных каналов в получаемом.
Для нашей ситуации такую операцию придется провести 6 раз, для каждого из моноканалов в отдельности. 
Например, для surround left канала, настройки pan будут выглядеть так: 

pan=1:0:0:1:0:0:0

В результате получилось

mplayer /media/m/1.ac3 -ao pcm:file=/media/video/l.wav -channels 6 -af  pan=1:1:0:0:0:0:0 && mplayer /media/m/1.ac3 -ao pcm:file=/media/video/r.wav -channels 6 -af  pan=1:0:1:0:0:0:0 && mplayer /media/m/1.ac3 -ao pcm:file=/media/video/sl.wav -channels 6 -af  pan=1:0:0:1:0:0:0 && mplayer /media/m/1.ac3 -ao pcm:file=/media/video/lfe.wav -channels 6 -sr  pan=1:0:0:0:1:0:0 && mplayer /media/m/1.ac3 -ao pcm:file=/media/video/c.wav -channels 6 -af  pan=1:0:0:0:0:1:0 && mplayer /media/m/1.ac3 -ao pcm:file=/media/video/lfe.wav -channels 6 -af  pan=1:0:0:0:0:0:1

где /media/m/1.ac3 — исходный файл.

Один из 6 результатов выполнения команды выглядит так: 

malky@malky-desktop:~$ mplayer /media/m/1.ac3 -ao pcm:file=/media/video/lfe.wav -channels 6 -af  pan=1:0:0:0:0:0:1
mplayer: Symbol `ff_codec_bmp_tags’ has different size in shared object, consider re-linking
MPlayer SVN-r33713-4.6.1 (C) 2000-2011 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing /media/m/1.ac3.
libavformat file format detected.
[eac3 @ 0x20bc480] max_analyze_duration reached
[eac3 @ 0x20bc480] Estimating duration from bitrate, this may be inaccurate
[lavf] stream 0: audio (eac3), -aid 0
Load subtitles in /media/m/
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 6 ch, s16le, 1536.0 kbit/33.33% (ratio: 192000->576000)
Selected audio codec: [ffeac3] afm: ffmpeg (FFmpeg E-AC-3)
==========================================================================
[AO PCM] File: /media/video/lfe.wav (WAVE)
PCM: Samplerate: 48000Hz Channels: Mono Format floatle
[AO PCM] Info: Faster dumping is achieved with -benchmark -vc null -vo null -ao pcm:fast
[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
AO: [pcm] 48000Hz 1ch floatle (4 bytes per sample)
Video: no video
Starting playback…
A:8751.5 ( 2:25:51.5) of 8751.5 ( 2:25:51.5)  1.0%

Exiting… (End of file)

Следует отметить, что похожая операция должна быть удачной для любого многоканального аудиофайла, который может быть воспроизведен с помощью mplayer. Также возможно извлекать звук и из видеофайла, при этом необходимо будет добавить опции -vo null -vc null и, при необходимости, указать порядковый номер аудиодорожки, если их больше 1, параметром -aid номер (следует отметить, что для DVD-video нумерация начинается от 128, для TS контейнеров также начало нумерации может отличаться от 0).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *