矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 38424|回复: 33

Openwrt下 mplayer的配置详解 (把路由器变为网络收音机)

[复制链接]
发表于 2013-10-26 23:58:14 | |阅读模式
本帖最后由 gaochongjun1 于 2013-10-26 23:58 编辑

        2012年7月份左右曾经看到有人把路由器改成网络播放器使用,无奈于时间与精力,事情不了了之,后来也就渐渐淡忘了。一直发展到今年春节期间,意外搞到一部DB120-WG路由器,于是东风再起,重新开始折腾网络收音机。
       曾在“第四届大赛”板块发了一个早期近似失败的实验品,也总算是为后来打下基础。

应大家的要求,这里详细地写下刷机过程,原版OpenWrt Backfire 10.03.1系统安装mplayer播放器步骤,Anyradio服务器电台列表读取程序Linux shell 版

DB120-WG主板.jpg

1、硬件准备
    DB120-WG路由器,USB声卡,一个ADSL设备(如调制解调器,其它路由器),RJ-45标准网线

    路由器我试过RG100a-AA,刷好后LED全部错位,按钮不可用,其它正常。只要路由器的CPU是BCM6358,带USB口的都可以刷文中的固件。这样就无需安装下文所述的软件包。
    USB声卡不要用Tenx牌子芯片的,效果很差。

2、刷机
    (1)、将RJ-45线一水晶头插到路由器的WAN口(LAN4),另一头连接电脑网卡。
    (2)、配置电脑本地网卡为固定IP 192.168.1.100,网关192.168.1.1,子网掩码255.255.255.0
    (3)、先不要接通路由器电源,按住路由器的RST键不放,打开电源,直到绿色的POWER灯变为红色,说明路由器已经进入CFE工厂设置模式
    (4)、浏览器输入http://192.168.1.1/upload.html ,此时应该可以看到“上传固件”(Upload the firmware)字样
    (5)、下载本文提到的定制好的固件,上传到路由器
    (6)、路由器自动把固件写入RAM,重新对FLASH编程,过程大概10分钟完成。此时TTL接口上将回显编程进度。过程中路由器千万不能断电。

帖子结尾会提供固件下载地址。建议先刷不带CFE的固件,如果刷好后系统无法启动,再刷带CFE的固件。注意:一旦CFE被刷坏,路由器就无法再次通过上诉方法重刷!

3、加入WIFI网络
    (1)、浏览器输入192.168.1.1,登陆openwrt设置界面,默认密码admin,进入后先设置SSH密码(可以设为admin,比较方便),然后依次单击network ---》interface ---》WIFI ---》Scan ---》 将列出扫描到的接入点,找到自家路由器发送的信号,单击Join network ,输入无线热点密码,其它一切默认,单击Save,回到 interface 界面,可以看到接口多出WWAN一项。
    (2)、确定无误,单击页面右上方红色字体“Unsaved Changes”,单击Apply应用设置,至此netwrok设置完毕。处在局域网里的电脑不一定能上网,但路由器一定可以访问广域网了。

有些朋友曾经问过,平常印象中的路由器都是“发射”信号,怎么还能“接收”信号呢?
       换个角度思考,要访问一个网页,就必须先发送HTTP协议头给服务器,请求相应文件,然后人家才会把数据传给你,也就是说WIFI肯定是双向的,就像以太网接口或蓝牙接口一样,所谓“只能发射”其实是狭义上的说法。Openwrt提供了网桥逻辑配置界面,只要把wifi配置为DHCP服务器,映射到系统WAN就大功告成了。

配置完毕后,使用Putty实现远程终端,winSCP实现远程文件管理

putty.jpg

winscp.jpg


3、必要软件
    操作系统:Openwrt Backfire 10.03。

    如果刷的是原版系统,而非文中提到的固件的话,可能需要执行下列步骤
    (1)、软件包 -- kmod-usb-audio, alsa-utils, kmod-usb-storage, kmod-usb-ohci,
                  kmod-usb2, kmod-usb-hid, kmod-nls-base, kmod-nls-cp437,
                  kmod-nls-iso8859-1, kmod-nls-utf8, kmod-fs-ext3, kmod-fs-vfat,
                  kmod-fuse, ntfs-3g, block-hotplug, libiconv, zlib, libmad
                安装步骤如下:

                1.安装USB声卡驱动

                 root@OpenWrt:/# opkg install kmod-usb-audio
                 
                 root@OpenWrt:/# ls dev

                 显示audio、dsp表示声卡安装成功

                2.安装支持库
                root@OpenWrt:/# opkg install kmod-usb-audio
                root@OpenWrt:/# opkg install alsa-utils
                root@OpenWrt:/# opkg install kmod-usb-storage
                root@OpenWrt:/# opkg install kmod-usb-ohci
                root@OpenWrt:/# opkg install kmod-usb2
                root@OpenWrt:/# opkg install kmod-usb-hid
                root@OpenWrt:/# opkg install kmod-nls-base
                root@OpenWrt:/# opkg install kmod-nls-cp437
                root@OpenWrt:/# opkg install kmod-nls-iso8859-1
                root@OpenWrt:/# opkg install kmod-nls-utf8
                root@OpenWrt:/# opkg install kmod-fs-ext3
                root@OpenWrt:/# opkg install kmod-fs-vfat
                root@OpenWrt:/# opkg install kmod-fuse
                root@OpenWrt:/# opkg install ntfs-3g
                root@OpenWrt:/# opkg install block-hotplug
                root@OpenWrt:/# opkg install libiconv
                root@OpenWrt:/# opkg install zlib
                root@OpenWrt:/# opkg install libmad

    - (2)、解压文中的附件,复制mplayer,到/usr/share/mplayer/目录下(如果目录不存在请新建)
                执行下来命令修改执行权限755

                root@OpenWrt:/# chmod 755 /usr/share/mplayer/mplayer


插USB声卡到路由器,稍等片刻,声卡上的指示灯点亮,说明系统已经识别并挂载声卡。

接下来试运行mplayer:

     创建fifo文件
     root@OpenWrt:/# mkfifo /fifofile
     root@OpenWrt:/# /usr/share/mplayer/mplayer -slave -input file=/fifofile -playlist /播放列表地址

4、电台列表(播放列表)
     mplayer正常运行还不行,如果没有网络电台的URL的话,只有听本地文件或者是空气。因此,我们可能需要辛苦地到处筹集地址。设想假如有个程序能自动获取网上的所有资源并生成播放列表,那就方便多了。这里,对AnyRadio进行了深入研究,成功找出API地址,编写了下面的linux shell方便各位。
     
     执行下面命令,
     root@OpenWrt:/# mkdir /webradio/
     root@OpenWrt:/# mkdir /webradio/vars

上传下面代码到/webradio/downloadlist

#!/bin/sh
# Download the radio stations list  from the server

# Read the list of radio stations
read_list()
{
    rm -f /webradio/vars/playlist.lst
    lnum=`awk 'END{print NR}' /webradio/vars/weblist.lst`  
    echo +10 count:$lnum
    for i in $( seq 1 $lnum );do
        str=`sed -n ${i}p  /webradio/vars/weblist.lst`   
        str=`echo $str | cut -d"|" -f6`         
        len=`echo $str|cut -c1-1`
        #if [ ! $len == r ]
        #   then
           echo +11 $i $str
           echo $str >> /webradio/vars/playlist.lst
        #fi
     done
}

echo
echo   +Download anyradio list.
echo

rm -f /webradio/vars/url.lst

surl="http://113.31.87.69/getAppServer.jsp?sysid=8020&channelid=7001&version=6008"
wget -c $surl -O /webradio/vars/url.lst

if [ -f /webradio/vars/url.lst ]
   then
        URL=`sed -n 1p  /webradio/vars/url.lst`   

        echo Server ip: $URL
   else
        echo  +99 Download error!       
fi

echo
echo please wait... downloading
rm -f /webradio/vars/weblist.lst

wget -c http://$URL/conf/channel.list -O /webradio/vars/weblist.lst

if [ -f /webradio/vars/weblist.lst ]
   then
     echo downloaded
     read_list
else
     echo +99 download error!
fi
     
     设置脚本755执行权限
     root@OpenWrt:/# chmod 755 /webradio/downloadlist

     最后运行脚本
     root@OpenWrt:/# /webradio/downloadlist

     待程序结束后,打开/webradio/vars/playlist.lst 文件,成千电台的地址就呈现在眼前。

5、至此,路由器已经变成了网络收音机或播放器,剩下的还可以加LCD,MCU控制等。
新版网络收音机仿真.jpg

关于mplayer:
      Mplayer 是linux下的多媒体播放程序。为了编译能在BCM6358 处理器下运行的的mplayer,吾费尽周折,现在可以稳定运行在openwrt下。

由于BCM6358的ALU没有浮点运算单元,所以干脆把源程序里的OSD,视频等全部剪掉了,解码方式改用定点解码,事实上播放效果优于笔记本电脑。

目前附件中的mplayer支持mp3(libmad), wmav1, wmav2, aac(faad2), flac, ogg(tremor)几种有定点解码库的格式, 其中 wma 解码用到了 Rockbox 的定点解码库。

支持主流流媒体协议http,rspt,mms,支持自动DNS解析服务器IP



*********************************************************************
* 固件下载地址:
*     不带CFE固件:  http://pan.baidu.com/share/link?shareid=297312&uk=1562445911  
*     带CFE的固件:    http://pan.baidu.com/s/17ouFx
* =========================================================
*
* 编译完毕的 Mplayer: http://pan.baidu.com/s/1BYfgX
*********************************************************************


联系:QQ 1822528741
发表于 2013-10-27 07:23:05 来自手机 |
顶一个,楼主很厉害。
发表于 2013-10-27 08:54:21 |
本帖最后由 一天 于 2013-10-27 08:57 编辑

软件的贴子应该发到 CSDN 。 或 51CTO 。 而不是这里。
     
发表于 2013-10-27 09:48:44 |
牛人一个。。。顶起
 楼主| 发表于 2013-10-27 13:00:51 |
一天 发表于 2013-10-27 08:54
软件的贴子应该发到 CSDN 。 或 51CTO 。 而不是这里。

朋友说得很对。只是有一篇关于硬件的发在坛里,这篇算是对那篇的补充罢
     
发表于 2013-10-27 15:05:41 |
顶楼主,openwrt这个学习了好久了
发表于 2013-10-27 16:45:28 |
很不错,有了地址在电脑上也能播放了。
发表于 2013-10-28 22:43:51 |
楼主是个热心人,当然人也很有才华,也不藏着掖着,向楼主致敬!
发表于 2013-10-29 14:02:42 |
很厉害                             
发表于 2013-10-30 10:15:09 |
也经常幻想旧物焕新,可惜知识不足无法实现。好的例子,典型!
发表于 2013-10-30 11:59:03 |
请问楼主我的是RG100a-AA,没有任何改动的路由,刷那个版本OPENWRT好
     
发表于 2013-10-30 12:16:26 |
这个要学习下了 好东西
     
发表于 2013-11-9 23:37:05 |
绝对的技术贴,膜拜!
发表于 2013-11-9 23:46:16 |
学习了  谢谢分享
     
发表于 2013-11-10 16:02:49 |
学习了,谢谢分享!
这样就有无数电台的地址了!

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-2 20:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表