Как проиграть AMR на Linux?

0. Лирика

Недавно я приобрел мобильный телефон с поддержкой звукового формата AMR. На радостях я ощасливил себя загрузкой пары сотен реалтонов в этом формате :) И тут стал вопрос о их прослушивании перед заливкой в телефон.

Под Linux "из коробки" AMR поддерживают RealPlayer и HelixPlayer - первый отказался воспроезвести ссылаясь на занятость звукового устройства, а второй заявил, что у него нет возможности проиграть данный формат, хотя на сайте заявлена его поддержка :(

Выбор остановился на MPlayer, в состав которого входит FFMpeg и для которого есть исходники кодеков AMR со спецификациями.

1. Берем MPlayer из CVS:

Вы можете получить MPlayer через анонимный CVS.
Выполните следующие команды, чтобы получить последние исходники:

    cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer login
    cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer co -P main

Когда у вас спросят пароль, просто нажмите <enter>. Директория с именем main будет создана в текущей директории.

Следует заметить, что CVS MPlayer не функционирует без копии библиотек libavcodec, libavformat и libavutil из FFmpeg. Скачайте FFmpeg CVS:

    cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login
    cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg

Когда у вас спросят пароль, просто нажмите <enter>. Директория с именем ffmpeg будет создана в текущей директории.
Скопируйте libavcodec, libavformat и libavutil поддиректории в директорию main.

2. Добавляем поддержку amr:

Читаем коммент в mplayer/libavcodec/amr.c
Качаем нужный файл, распаковываем куда надо,
пересобираем mplayer с поддержкой amr-nb.


Спасибо B084

В коментах amr.c даны прямые ссылки на архивы.
Насколько понял они не самые последние.
У меня нормально собирался mplayer из cvs с

http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-610.zip
http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-600.zip

Спасибо isn

Распаковываем 26204-600.zip/26204-600_ANSI-C_source_code.zip/c-code в main/libavcodec/amrwb_float
Распаковываем 26104-610.zip/26104-610_ANSI_C_source_code.zip/c-code в main/libavcodec/amr_float

3. Собираем MPlayer:

Включаем поддержку amr в MPlayer

./configure --enable-amr_wb --enable-amr_nb --prefix=/usr

make

4. Слушаем amr в MPlayer

На моей системе Slackware 10.2 + Droppline Gnome 2.12.2
mplayer играл только одну секунду напрямую через alsa

Проблема решилась использованием вывода через esd:

mplayer -ao esd *.amr

PS:

Сей документ был написан 23 февраля 2006 года.
Использован MPlayer из CVS от 22 февраля 2006 года.
Благодарность за содействие в решении проблемы B084 и isn из форума LOR.


(c) 2006 Anatoliy Okhotnikov aka AcidumIrae