- PVSM.RU - https://www.pvsm.ru -
Недавно у меня встала задача транслировать радиопоток и поток онлайн-трансляции подкаста [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
Нажмите здесь для печати.