02.11.08

ubuntu+amr.

Posted in multimedia, ubuntu at 3:01 am by viliar

Собственно, ничего нового здесь я не открою, просто немного обобщу свой опыт в разрешении данного вопроса. Сразу отмечу, что не смотря на десктопную жизнь в убунту - знаю ее не очень хорошо. Redhat-подобные системы мне ближе,
да и с серверами я больше времени провожу, нежелю тюню свой десктоп. Посему не обессудьте, если есть косяки или неточности. А еще по некоторым местам я прошелся вскользь. Это скорее такая заметка на память.

В связи с покупкой нового мобильника появилась необходимость в просмотре и прослушивании на компе материалов, отснятых с мобилы. Как ни странно, в убунте по умолчанию поддержки формата arm, в котором кодируется звук, нету.

Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
Cannot find codec ‘amr_nb’ in libavcodec…
ADecoder init failed :(
ADecoder init failed :(

Погуглив выяснилось следующее:

1) Ходят слухи, что вроде бы в репозитарии medibuntu библиотека libavcodec собрана уже с поддержкой amr. Но, согласно забитому в багзилле ubuntu
- mplayer использует свою декодера libavc, с которым собирался,  а не из библиотеки, которая стоит в системе. И правда:

$ ldd /usr/bin/mplayer | grep -i avc
$

2) Вот эту библиотеку http://ftp.penguin.cz/pub/users/utx/amr/ можно уже найти в репозитарии debian:

http://ftp.acc.umu.se/mirror/debian-multimedia/pool/main/a/amrnb/
http://ftp.acc.umu.se/mirror/debian-multimedia/pool/main/a/amrwb/

После установки останется только найти только mplayer, собранный с поддержкой amr, чтоб не мучиться с перекомпиляцией mplayer и доустановкой всех dev пакетов для его компиляции. Собственно, уже такая сборка есть на замечательном сайте getdeb.net:
http://www.getdeb.net/app/MPlayer
И для amd64 и для i386.
Однако, несмотря на уверения самой проги
# /usr/bin/mplayer -ac help | grep amr
ffamrnb ffmpeg working AMR Narrowband [libamr_nb]
ffamrwb ffmpeg working AMR Wideband [libamr_wb]

Оно не задействует ни стоящие в системе библиотеки
$ ldd /usr/bin/mplayer | grep -i amr
$
и не хочет проигрывать звук в 3gp файлах, закодированных звуковым кодеком amr.

3) Остается мучаться пересборкой mplayer.

Можно так: http://tolik.org/articles/amr.html, так как до выхода версии mplayer rc2 нужно было скачивать с сайта 3gpp.org дополнительные пакеты. Иначе
получалось что-нибудь типа
amr.c:72:34: error: amr_float/interf_dec.h: No such file or directory

Однако уже в rc2 версии
* AMR now handled via libamr wrapper (http://www.penguin.cz/~utx/amr)

apt-get source mplayer здесь бесполезен, так как он вытаскивает версию rc1. Поэтому я качал с оф. сайта http://www.mplayerhq.hu.
Используя штатную утилиту разруливаем зависимости:
apt-get build-dep mplayer
У меня далее было выкачивание около 70Mb dev пакетов.
И сборка. При сборке я только поправил debian/rules, добавив
–enable-libamr_nb
–enable-libamr_nb

После dpkg-buildpackage (могут понадобиться флаги типа -na -nc ) поставил в систему пакет и вуаля:

# ldd /usr/bin/mplayer | grep amr
libamrnb.so.3 => /usr/lib/libamrnb.so.3 (0×00002b5ab8b4d000)
libamrwb.so.3 => /usr/lib/libamrwb.so.3 (0×00002b5ab8d8b000)

Звук есть. Конечно это не решает проблему со звуком ни с xine, ни c totem, но для просмотра 3gp вполне достаточно одного видеопроигрывателя. Кроме того, ничего не мешает их (3gp) mencoder’ом перекодировать и смотреть где захочется. В upcoming version ubuntu (8.04) уже используется версия rc2 mplayer’а, с которой либо уже они включили проигрывание amr, либо сделают это чуть позже. Надеюсь, что и в остальных видеопроигрывателях через
стандартную либу это сделают тоже. Что сделает данную заметку совсем
не нужной :-)

Miscalleneous)
Поставить себе RealPlayer или HelixPlayer. Или вытащить нужное из других дистров, в которых все ок. Типа ASPlinux. Не пробовал.

14 queries. 0.245 seconds