• Пожалуйста, не загружайте медиафайлы большого объема. Закачивайте их в облачные хранилища, указывая ссылку на скачивание.

Интернет радио проекта WiFiRadio

#1
В сети был найден проект WiFiRadio - интернет радио для роутера на базе OpenWrt. Свободного роутера с USB и достаточным объемом свободного места не нашлось, поэтому решил проверить функциональность этого радио в VirtualBox. На ранее развернутой системе устанавливаю требуемые пакеты
Bash:
opkg update
opkg install curl mpd-full mpc kmod-usb-core kmod-usb-audio kmod-sound-core alsa-utils kmod-usb-hid triggerhappy vsftpd unzip
wget -U "Mozilla/5.0" -O "/fw.zip" "http://wifiradio.su/download/wifiradio.su_full.zip"
unzip -o "/fw.zip" -d "/"
chmod -R 755 /www/cgi-bin/
chmod -R 755 /etc/wifiradio/
rm -r -f "/fw.zip"
Подключил звуковую карту 3d Sound 5.1, пробросил ее в виртуальную машину
usb_sound-png.117

Перезапустил music player daemon
Bash:
/etc/init.d/mpd restart
Проверил, что OpenWrt определило ее как звуковую карту
Bash:
root@OpenWrt:~# cat /proc/asound/cards
0 [Device         ]: USB-Audio - USB PnP Sound Device
                      C-Media Electronics Inc. USB PnP Sound Device at usb-0000:00:06.0-2, full speed
Убедился, что alsamixer и mpc умеют работать с этой картой
Bash:
root@OpenWrt:~# mpc volume 75
volume: 75%
alsamixer-png.118

Открываем в браузере страницу по адресу, который мы выделили для OpenWrt в VirtualBox http://192.168.1.200/play/

Громкость регулируется, при переключении робот произносит названия станций, но сами станции не проигрываются. При добавлении отдельных потоков радио играет
Bash:
root@WifiRadio:~# mpc add http://listen6.myradio24.com:9000/vitaminfm
root@WifiRadio:~# mpc play
No Name Station: ц├ц═цґцґц═ ц■ц╟ц╗ц╠ц╙ц╔ - ц├ц═цґцґц═ ц■ц╟ц╗ц╠ц╙ц╔
[playing] #10/118   0:31/0:00 (0%)
volume: 75%   repeat: off   random: off   single: off   consume: off
То есть ошибка скорее всего в скрипте пересборки плейлиста.
Прошло полчаса-час. И ответ нашелся в мануале на сайте разработчика Protocol — Music Player Daemon 0.21.4 documentation
Playlists are stored inside the configured playlist directory. They are addressed with their file name (without the directory and without the .m3u suffix).
В файле /etc/wifiradio/play.sh в предпоследней строке у playlist.m3u удалено расширение, получилось так
Bash:
mpc clear
mpc load playlist
mpc play $station
Теперь радио переключается и воспроизводится.
PS решил проверить будет ли это работать на пакете mpd-mini - и тут меня ждал облом, пишет что не может воспроизвести поток по http адресу. На версии OpenWrt 17.01.6 x86 generic работают и mpd-mini и mpd-full. Возможно это ошибка сборки версии 18.06.2 под x86 generic архитектуру, требуется проверка на пользовательском роутере.
 
#2
Автор WiFiRadio выпустил новую версию WifiRadio.SU v56.Full. Чтобы закрыть для себя эту тему попробую разобраться в причине поломки воспроизведения http потоков при использовании пакета mpd-mini.
Версия OpenWrt 17.01.6 в которой сборка mpd-mini работает
Bash:
root@WifiRadio:~# mpd -V
Music Player Daemon 0.19.19
Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright (C) 2008-2014 Max Kellermann <max@duempel.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
simple proxy
Storage plugins:
local
Decoders plugins:
[mad] mp3 mp2
[vorbis] ogg oga
[oggflac] ogg oga
[flac] flac
[dsdiff] dff
[dsf] dsf
[pcm]
Output plugins:
null alsa oss httpd
Encoder plugins:
null wave flac
Input plugins:
file alsa curl
Playlist plugins:
extm3u m3u pls xspf asx rss cue embcue
Protocols:
file:// http:// https:// alsa://

root@WifiRadio:~# ldd /usr/bin/mpd
        /lib/ld-musl-i386.so.1 (0xb7791000)
        libmpdclient.so.2 => /usr/lib/libmpdclient.so.2 (0xb7776000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7758000)
        libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0xb7726000)
        libvorbisidec.so.1 => /usr/lib/libvorbisidec.so.1 (0xb770c000)
        libmad.so.0 => /usr/lib/libmad.so.0 (0xb76f6000)
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb76bd000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb75fe000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb75eb000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb75e8000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb74eb000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb73d8000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb73c4000)
        libc.so => /lib/ld-musl-i386.so.1 (0xb7791000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0xb73bd000)
        libmbedtls.so.10 => /usr/lib/libmbedtls.so.10 (0xb73a5000)
        libmbedx509.so.0 => /usr/lib/libmbedx509.so.0 (0xb7396000)
        libmbedcrypto.so.0 => /usr/lib/libmbedcrypto.so.0 (0xb7359000)
root@WifiRadio:~#
Версия OpenWrt 18.06.2 в которой сборка mpd-mini не работает
Bash:
root@WifiRadio:~# mpd -V
Music Player Daemon 0.20.9
Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright 2008-2017 Max Kellermann <max.kellermann@gmail.com>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
simple proxy
Storage plugins:
local
Decoders plugins:
[mpg123] mp3
[vorbis] ogg oga
[oggflac] ogg oga
[flac] flac
[dsdiff] dff
[dsf] dsf
[pcm]
Filters:
Tag plugins:
Output plugins:
null alsa oss httpd
Encoder plugins:
null wave flac
Input plugins:
file alsa curl
Playlist plugins:
extm3u m3u pls xspf asx rss flac cue embcue
Protocols:
file:// http:// https:// alsa://
Other features:
epoll iconv inotify ipv6 tcp un

root@WifiRadio:~# ldd /usr/bin/mpd
        /lib/ld-musl-i386.so.1 (0xb7efb000)
        libmpdclient.so.2 => /usr/lib/libmpdclient.so.2 (0xb7edf000)
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb7ea1000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7e82000)
        libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0xb7e51000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0xb7e4a000)
        libvorbisidec.so.1 => /usr/lib/libvorbisidec.so.1 (0xb7e30000)
        libmpg123.so.0 => /usr/lib/libmpg123.so.0 (0xb7df3000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb7d39000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7d26000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7c0f000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7bfa000)
        libc.so => /lib/ld-musl-i386.so.1 (0xb7efb000)
        libmbedtls.so.10 => /usr/lib/libmbedtls.so.10 (0xb7be2000)
        libmbedx509.so.0 => /usr/lib/libmbedx509.so.0 (0xb7bd4000)
        libmbedcrypto.so.1 => /usr/lib/libmbedcrypto.so.1 (0xb7b98000)
Решил проверить работу в разрабатываемой ветке c более новой версией mpd - все также не работает
Bash:
root@WifiRadio:~# mpd -V
Music Player Daemon 0.20.23
Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright 2008-2017 Max Kellermann <max.kellermann@gmail.com>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
simple proxy
Storage plugins:
local curl
Decoders plugins:
[mpg123] mp3
[vorbis] ogg oga
[oggflac] ogg oga
[flac] flac
[dsdiff] dff
[dsf] dsf
[pcm]
Filters:
Tag plugins:
Output plugins:
null alsa oss httpd
Encoder plugins:
null wave flac
Input plugins:
file alsa curl
Playlist plugins:
extm3u m3u pls xspf asx rss flac cue embcue
Protocols:
file:// http:// https:// alsa://
Other features:
epoll iconv inotify ipv6 tcp un

root@WifiRadio:~# ldd /usr/bin/mpd
        /lib/ld-musl-i386.so.1 (0xb7eaf000)
        libmpdclient.so.2 => /usr/lib/libmpdclient.so.2 (0xb7e8f000)
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb7e4b000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7e2b000)
        libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0xb7df7000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0xb7dee000)
        libvorbisidec.so.1 => /usr/lib/libvorbisidec.so.1 (0xb7dd2000)
        libmpg123.so.0 => /usr/lib/libmpg123.so.0 (0xb7d94000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb7cd5000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7cc1000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7ba0000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7b89000)
        libc.so => /lib/ld-musl-i386.so.1 (0xb7eaf000)
        libmbedtls.so.12 => /usr/lib/libmbedtls.so.12 (0xb7b6f000)
        libmbedx509.so.0 => /usr/lib/libmbedx509.so.0 (0xb7b5f000)
        libmbedcrypto.so.3 => /usr/lib/libmbedcrypto.so.3 (0xb7b1d000)
Т.е. последние сборки mpd-mini в качестве декодера MP3 протокола используют библиотеку libmpg123, а в OpenWrt 17 еще использовался декодер libmad. При этом установив "родную" для библиотеки libmpg123 программу mpg123 получил работающее воспроизведение http потоков
Bash:
root@WifiRadio:~# mpg123 http://listen6.myradio24.com:9000/vitaminfm
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.25.10; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Directory: http://listen6.myradio24.com:9000/

Terminal control enabled, press 'h' for listing of keys and functions.

Playing MPEG stream 1 of 1: vitaminfm ...
ICY-NAME: VitaminFM.ru
ICY-URL: http://vitaminfm.ru
MPEG 1.0 L III cbr128 44100 j-s
ICY-META: StreamTitle='п▒пґп╒п°пґп² - п■пІп╦пҐя│п╬п╡я▀п╣ п╪п╟п╩я▄я┤п╦п╨п╦';
 
Последнее редактирование:
#3
Собрал пакет mpd-mini cлинкованный с библиотекой libmad для декодирования MP3, удалив поддержку flac и ogg/vorbis (в формате ogg у меня нет файлов и среди интернет вещания формат непопулярен, а flac не для роутера с дешевой звуковой картой)
Скопировал файл mpd-mini_0.20.9-2_i386_pentium4.ipk с помощью WinCSP в папку /tmp на роутере. Обновил список пакетов и удалил старый пакет mpd-mini и установил свежескомпилированную версию
Bash:
root@WifiRadio:~# opkg update
root@WifiRadio:~# opkg remove mpd-mini
root@WifiRadio:~# opkg install /tmp/mpd-mini_0.20.9-2_i386_pentium4.ipk
Installing mpd-mini (0.20.9-2) to root...
Installing libmad (0.15.1b-4) to root...
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/i386_pentium4/packages/libmad_0.15.1b-4_i386_pentium4.ipk
Configuring libmad.
Configuring mpd-mini.
Вывод информации о версии, протоколах и слинкованных библиотеках
Bash:
root@WifiRadio:~# mpd -V
Music Player Daemon 0.20.9
Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright 2008-2017 Max Kellermann <max.kellermann@gmail.com>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
simple proxy
Storage plugins:
local
Decoders plugins:
[mad] mp3 mp2
[dsdiff] dff
[dsf] dsf
[pcm]
Filters:
Tag plugins:
Output plugins:
null alsa oss httpd
Encoder plugins:
null wave
Input plugins:
file alsa curl
Playlist plugins:
extm3u m3u pls xspf asx rss cue embcue
Protocols:
file:// http:// https:// alsa://
Other features:
epoll iconv inotify tcp un

root@WifiRadio:~# ldd /usr/bin/mpd
        /lib/ld-musl-i386.so.1 (0xb7f5c000)
        libmpdclient.so.2 => /usr/lib/libmpdclient.so.2 (0xb7f40000)
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb7f02000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7ee3000)
        libmad.so.0 => /usr/lib/libmad.so.0 (0xb7ecd000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb7e13000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7e00000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7ce9000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7cd4000)
        libc.so => /lib/ld-musl-i386.so.1 (0xb7f5c000)
        libmbedtls.so.10 => /usr/lib/libmbedtls.so.10 (0xb7cbc000)
        libmbedx509.so.0 => /usr/lib/libmbedx509.so.0 (0xb7cae000)
        libmbedcrypto.so.1 => /usr/lib/libmbedcrypto.so.1 (0xb7c72000)
root@WifiRadio:~#
MP3 потоки воспроизводятся. Т.е. в OpenWrt 18 сломана работа mpd с библиотекой mpg123 при воспроизведении по http.
 

Вложения

Последнее редактирование:
Вверх