让 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/ 下的文件再安装。

让 minidlna 支持 rmvb、gb2312 mp3 标签》有9个想法

  1. test

    这个不错。不过我试了一下,在freenas下,按你的方法修改了一下通过编译后,相应的rm文件,没有列出来。

    回复
      1. test

        前面提到的问题,主要是目录权限问题,但加-R参数好像也不能刷新文件,暂时不知道什么原因。

        回复
  2. luguo

    export LANG=zh_CN.UTF-8 我在SSH执行了 还是乱码 之后又放到/etc/profile里面还是乱码,如何解决?

    回复
  3. Pingback引用通告: 让 minidlna 支持 rmvb、gb2312 mp3 标签 | 四十大盗

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据