让 minidlna 支持 rmvb、gb2312 mp3 标签

各位一定认为minidlna最大的遗憾是不支持rmvb,我是这么觉得。minidlna是通过ffmpeg库获取媒体文件的metadata,ffmpeg早已经支持rmvb,很多国产Pad芯片解决方案都可以实现对rmvb的硬解,现在arm cpu的性能软解也不是问题。想不明白为什么minidlna一直没有加入对rmvb的支持。或许是考虑到了很多dlna renderer不支持rmvb。如此只能自己尝试hacking一下了。minidlna启动后会扫描分析指定的目录,然后将信息写入sqlite数据库,而和客户端传输数据用的http协议,http协议和文件格式无关,所以只要让minidlna的scanner认识rmvb即可。结果一定是OK的,我用的MW4530R路由器,在MELE A1000 下使用BunbbleUPNP测试没问题,不过只能软解。最后建议您安装libffmpeg-full,默认可能是libffmpeg-mini,后者支持的文件格式有限,使用前者我的所有视频现在都可以被正确的加入minidlna。

在默认情况下如果mp3文件的id标签使用了gb2312编码,openwrt下的minidlna里会显示乱码,只有将id转换成utf8才能正常显示,这其实不是minidlna的问题而是编译时使用的iconv库的语言支持不完整。执行make menuconfig 进入 Global build settings 选中Compile with full language support,重新编译minidlna 这时使用的iconv库就是libiconv-full。这个packages里有个 100-strip_charsets.patch 的patch 给这个包缩减了很多语言包括cp936,也就是gb2312的支持,所以要去掉这个patch。或者您自己修改一下这个文件把cp936相关中文支持加上。启动minidlna前export LANG=zh_CN.UTF-8,minidlna就可以正常支持gb2312编码了。

以上工作是在openwrt 12.09和minidlna 1.0.24下进行的。把我做的patch放上来,如果您自己编译openwrt的固件,把这个文件放在attitude_adjustment/feeds/packages/multimedia/minidlna/patches目录下,编译时会自动应用该补丁。共patch了4个文件,其实只patch前两个就可以了。
999-realmedia-support.patch

以下是我自己编译出来支持rmvb gb2312标签的安装包:
minidlna_1.0.24-1_ar71xx.ipk

全部语言支持的libiconv-full:
libiconv-full_1.11.1-1_ar71xx.ipk

如果安装时提示md5 miss match 删除 /var/opkg-list/ 下的文件再安装。

菜鸟初玩 openwrt

在一个月前其实根本不知道openwrt为何物,或许它曾在我眼前出现过,终因无缘被我淡忘。这次奇遇缘起寻找一款支持vpn的路由器,google中出现最多的就是openwrt ddwrt,对两者进行了简单了解,我觉得openwrt可能更合适一点,而且功能远不是当初我能想像的,有人给路由器扩展usb 结合wrt 搞出很多有趣的玩意,这让我想起了几天前刚刚看到的tplink一款3g无线路由器 wr703n ,正好有一个usb口,在openwrt的supported device中查找wr703n 还真找到了。不过wr703n这种配置是有点难受 32m ram 4m flash,随后在淘保找到一个店家,采购了一个ram升级到64m flash升到8m的版本。几日到手后开始了近一个月的研究折腾。 Continue reading