суббота, 22 декабря 2007 г.

Настройка каналов при проигрывании aac в mplayer

Сегодня при просмотре видео пожатого в h264+aac столкнулся с неожиданной проблемой - полностью перепутанные каналы при прослушивании звука в режиме 5.1. При этом если указать мплееру что нужно использовать двухканальный режим, то звук даунмиксился вроде бы правильно (по крайней мере не было перекосов в звуке). Понятное дело что такую ситуацию нельзя назвать удовлетворительной. Интересно что команда speaker-test выдавала правильные результаты:

#speaker-test -Dplug:surround51 -c6
speaker-test 1.0.15
Playback device is plug:surround51
Stream parameters are 48000Hz, S16_LE, 6 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 6 to 5461
Period size range from 3 to 2730
Using max buffer size 5460
Periods = 4
was set period_size = 1365
was set buffer_size = 5460
0 - Front Left
4 - Center
1 - Front Right
3 - Rear Right
2 - Rear Left
5 - LFE

В результате поисков в гугле, наткнулся на форум, где описывалось кодирование видео под MacOS X кодеками h264 и aac. Так же там было очень полезное сообщение:

With the -6 option enabled, 5.1 audio is extracted to a 6-channel AAC track based on standard QuickTime channel mapping. This contains 6 separate audio channels in the following order:
1: Center
2: Left
3: Right
4: Left Surround
5: Right Surround
6: LFE (Low Frequency Effects


После недолгий манипуляций с мануалом мплеера были получены параметры командной строки, которые приводили расположение каналов в нужный вид:

-ao alsa:device=surround51 -channels 6 -af channels=6:6:0:4:1:0:2:1:3:2:4:3:5:5