- PVSM.RU - https://www.pvsm.ru -

Вещание AAC-потока с помощью Icecast2 и streamTranscoder

Вещание AAC потока с помощью Icecast2 и streamTranscoderНедавно у меня встала задача транслировать радиопоток и поток онлайн-трансляции подкаста [1], в формате AAC. Этот формат является более экономичным, чем MP3, и в то же время позволяет сохранять приемлемое качество звучания. По субъективным ощущениям 48Kbps AAC не отличается от 64Kbps MP3. В этой краткой заметке опишу, как я настраивал одновременное вещание в форматах MP3 128Kbps, MP3 64Kbps и AAC 48Kbps. При этом я воспользовался OpenSource-инструментом streamTranscoderv3, о котором, почему-то, на хабре не было ни слова. Принцип работы streamTranscoder изображен на рисунке. Далее, как его собрать и использовать.

Первым делом сделаем checkout исходников этой программы:

# svn co svn.oddsock.org/public/trunk/streamTranscoderv3 [2]

Для сборки этих исходников понадобилось поставить следующие пакеты (сервер у меня на Ubuntu 10.04):

# apt-get install automake libtool libmad0-dev libflac-dev libfaac-dev

Чтобы сборка прошла успешно, пришлось немного допилить файлы, шедшие в комплекте исходников.
1. Добавил в Makefile.am строчку:

ACLOCAL_AMFLAGS = -I m4

2. Раскомментировал в configure.in строчку

AC_PROG_CXX

3. Чтобы утилита скомпилировалась с поддержкой AAC, пришлось дописать в файл configure.in еще строчку:

  AC_DEFINE(HAVE_FAAC,1)

сразу перед строкой

  FAAC_CFLAGS

4. Для корректной сборки мне пришлось указать еще вот такой «костылек»:

LIBFLAC_LIBDIR=. ./autogen.sh

После компиляции получаем бинарник streamTranscoderv3, который помещаем, к примеру, в /opt/streamtranscoder.

# mkdir -p /opt/streamTranscoder
# mv streamTranscoderv3 /opt/streamTranscoder
# cd /opt/streamTranscoder
# ./streamTranscoderv3

Первый запуск бинарника создаст в текущем каталоге конфиг streamTranscoder_0.cfg, в котором нужно будет указать параметры потока-источника. Редактируем до примерно такого состояния:

# The source URL for the broadcast. It must be in the form http://server:port/mountpoint.  For those servers without a mountpoint (Shoutcast) use http://server:port.
SourceURL=http://127.0.0.1:1976/apple
AutomaticReconnectSecs=10
AutoConnect=1
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_INFO, 3 = LOG_ERROR+LOG_INFO+LOG_DEBUG
LogLevel=2
# Log File
LogFile=streamTranscoder
# Number of encoders to use
NumEncoders=2

Параметр SourceURL указывает на поток-источник, который уже существует. Помимо остальных более-менее понятных параметров, мы также указали параметр NumEncoders=2, что означает, что мы будем формировать два дополнительных потока (в нашем случае 64Kbps MP3 и 48Kbps AAC).
Запустив бинарник еще раз, получим конфиги кодировщиков, в нашем случае streamTranscoder_1.cfg и streamTranscoder_2.cfg. Они гораздо увесистее, комментировать каждый пункт нет смысла, просто приведу ссылку на то, как выглядит мой конфиг для AAC [3].

Оценить качество звучания вы можете на странице подкаста AppleInsider.ru [4], либо скормив эти ссылки в свой любимый плеер: Hi (MP3 128Kbps) [5], Low (MP3 64Kbps) [6], AAC (48Kbps) [7].

Автор: oioki


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/6705

Ссылки в тексте:

[1] подкаста: http://www.appleinsider.ru/ipodcast

[2] svn.oddsock.org/public/trunk/streamTranscoderv3: http://svn.oddsock.org/public/trunk/streamTranscoderv3

[3] мой конфиг для AAC: http://pastebin.com/RFNsnu7U

[4] странице подкаста AppleInsider.ru: http://podcast.appleinsider.ru/

[5] Hi (MP3 128Kbps): http://radio.appleinsider.ru:1976/apple.m3u

[6] Low (MP3 64Kbps): http://radio.appleinsider.ru:1976/apple.low

[7] AAC (48Kbps): http://radio.appleinsider.ru:1976/apple.aac