cyxavr 发表于 2010-3-28 14:35:42

经讨教“aozima”,学会网络收音机播放多首MP3的方法,下面跟大家分享。

网络收音机播放多首MP3的方法!
工具,SD卡,USB连接线,当然还在232 TOTTL 线啦。好下面开始。

首先参考
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3935812&bbs_page_no=1&bbs_id=3066

把主存储器切换为SPI-FLASH。

然后,
开始建立播放多个MP3文件的播放列表。

方法有两种:
1.自己动手制作播放列表---先用记事本编辑,然后将后缀名TXT改为m3u,保存。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_541813.jpg
(原文件名:未命名.jpg)


2.手动将网络收音机用USB线与PC连起来,再在收音机外启动,“USB 联机”操作。然后PC端可以看到有三个存储器了。

接下来利用命令 ,在windows -> 开始->运行->CMD 回车
转到SD卡所在的盘符
如图:(我的SD盘符是 I )并输入
“dir /b *.mp3 > play.m3u” 看清,中间是有空格。

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_541815.jpg
(原文件名:QQ截图未命名.jpg)

列出所有mp3文件并输出到play.m3u,

到此,播放表已生成。



接下来,长文件名支持的开启。
收音机软件默认是不开启开长文件名LFN的。不过听“aozima” 介绍,开启后,生成的HEX文件会大很多。呵呵,没关系啦,空间够大,下面来开开玩玩。

在ffconf.h 的第88行,打开LFN,我打开的是模式 1
收音机根目录\filesystem\dfs\filesystems\elmfat\ffconf.h

#define        _USE_LFN        1                /* 0, 1 or 2 */

然后把转换表
收音机根目录\filesystem\dfs\filesystems\elmfat\option\cc936.c也同时加入工程..
重新编译,下载程序。。。。。。。。。。。。1分钟时间的等待。

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_541819.jpg
(原文件名:1.jpg)


下面我自己玩玩收音去了。

然后播放这个m3u文件...就等于一次播放所有mp3了



。。。。。。。。。。。。
。。。。。。。。。。。。
前提下,SD中要有MP3音乐噢!!

TBN1 发表于 2010-3-28 16:06:22

网络收音机网络收音完成没有?

cyxavr 发表于 2010-3-28 16:10:41

可以网络收音。不过我功能暂时玩得比较少。

ffxz 发表于 2010-3-28 18:24:08

还真会把中文长文件名开启啊。。。那个空间呢。

gzhuli 发表于 2010-3-28 23:00:27

回复【3楼】ffxz
还真会把中文长文件名开启啊。。。那个空间呢。
-----------------------------------------------------------------------

我一直是开着LFN的,RO-data由40K -> 210K。
UTF-16 <-> GBK两个转换表的cache算法,有没有什么好的建议?
解决了cache算法,就可以实现一套独立的基于文件的转换引擎,不再占那么多flash空间了。同时也可以把ID3v2支持也做了。

ffxz 发表于 2010-3-29 09:12:24

cache还是用平衡树来做吧,按照上次的splay tree实现,应该不会出现丢弃根节点的情况,也可以考虑用红黑树。

不过有一点,转换表文件的文件名应该不会也需要转换表吧?如果需要的话就没法做了。

gzhuli 发表于 2010-3-29 15:37:41

回复【5楼】ffxz
cache还是用平衡树来做吧,按照上次的splay tree实现,应该不会出现丢弃根节点的情况,也可以考虑用红黑树。
不过有一点,转换表文件的文件名应该不会也需要转换表吧?如果需要的话就没法做了。
-----------------------------------------------------------------------

常用的Cache有个最大的缺点,cache数据结构消耗的资源,比目标大多了。UTF-16 -> GBK,只是一个2字节到2字节的mapping,splay tree额外加上十几字节,显得非常不划算,这是我犹豫的原因。当然,现在可以先用splay tree去实现,再慢慢想更好的算法。
转换表的文件名只要保证英文8.3格式,就不需要转换。

ffxz 发表于 2010-3-29 20:13:26

如果是这样,那么用一个数组来构造一个cache结构树,这样内存占用率应该会好些。只是如何构造这个树得下番功夫。
页: [1]
查看完整版本: 经讨教“aozima”,学会网络收音机播放多首MP3的方法,下面跟大家分享。