admin管理员组文章数量:1642338
OMV - open media vault 中 miniDLNA 增加支持 rm、rmvb 视频方法 (其他Linux系统也适用 NAS)
本文主要针对 open media vault(简称 OMV)中 miniDLNA 插件不支持 rm、rmvb 视频的问题,找到了正确的解决方法。同时本文也可以作为 Linux 系统下面,miniDLNA 则更加rm和 rmvb 视频支持的借鉴。
本文中的 miniDLNA 版本为 1.2.1。
测试环境
测试环境的软件平台为 openmediavault_5.5.11-amd64 (官网地址)版本,通过U盘安装的包含 Debain 5.7.0-0.bpo.2-amd64
和 OMV 5.5.11-amd64 程序的版本。
硬件平台如下:
- CPU:Intel Atom D2550 双核双线程;
- 主板:国光 小主机 老机器;
- 硬盘:Msata 8G;
- 内存:DDR3 2G;
OMV基础DLNA安装
目前在OMV系统的 omv-extras 插件(插件官网)中,已经有了对应的miniDLNA插件包,而且有对应的omv界面显示插件,包名为:openmediavault-minidlna 5.0.5 ,网页安装上这个插件的同时,系统会自动安装 minidlna 1.2.1 包,来实现miniDLNA的所有功能。注意安装omv-extras的插件,需要用梯子,否则会下载失败,建议用一个有梯子的路由器中转。
apt中安装的版本显示如下:
当然目前的这个minidlna是不支持rm、rmvb格式的,所以你的库里面的所有rm视频在DLNA库中是不可见的,但是实际上大部分的播放器和设备都支持rm、rmvb格式的解码,据说是因为FFmpeg早就支持的对该格式的解码。
安装好之后,先在网页端激活,生成对应的配置文件等。
因此需要针对目前的情况,通过修改源码使得 minidlna 1.2.1 支持rm、rmvb的格式。
minidlna 1.2.1 源码下载和修改
(如果同为amd64,也可以直接使用我编译好的文件,跳到下一步骤)
minidlna 又名 ReadyMedia,其官方下载地址是:mindlna下载地址
-
针对我们目标环境,需要下载对应的“minidlna-1.2.1.tar.gz”的包(大小为459.5 kB)。下载该版本的原因是,目前OMV系统中的minidlna也是这个版本,其支持插件应该兼容性更好,且在实际操作中要替换原有的执行代码,所以最好使用同版本的。
-
接下来将对应的包在Linux中解压:
tar -xzvf minidlna-1.2.1.tar.gz
-
修改3个文件里面的代码:
-
修改 metadata.c
//第840行 else if( strcmp(ctx->iformat->name, "mov,mp4,m4a,3gp,3g2,mj2") == 0 && ends_with(path, ".mov") ) xasprintf(&m.mime, "video/quicktime"); else if( strncmp(ctx->iformat->name, "matroska", 8) == 0 ) xasprintf(&m.mime, "video/x-matroska"); else if( strcmp(ctx->iformat->name, "flv") == 0 ) xasprintf(&m.mime, "video/x-flv"); //----在这里添加---- else if( strcmp(ctx->iformat->name, "rm") == 0 ) xasprintf(&m.mime, "video/x-pn-realvideo"); else if( strcmp(ctx->iformat->name, "rmvb") == 0 ) xasprintf(&m.mime, "video/x-pn-realvideo"); //----添加结束---- if( m.mime ) goto video_no_dlna;
-
修改 upnpglobalvars.h,注意这个文件不但要添加,还需要修改编码的最后一行代码,注意增加“,”和""。
//第166行 "http-get:*:audio/x-wav:*," \ "http-get:*:audio/x-flac:*," \ //----修改下行,增加“,”和"\"---- "http-get:*:application/ogg:*,"\ //----修改结束----- //----在这里添加---- "http-get:*:video/x-pn-realvideo:*" //----添加结束---- #define DLNA_FLAG_DLNA_V1_5 0x00100000 #define DLNA_FLAG_HTTP_STALLING 0x00200000
-
修改 utils.c
//第400行 ends_with(file, ".vob") || ends_with(file, ".ts") || ends_with(file, ".flv") || ends_with(file, ".xvid") || //----在这里添加---- ends_with(file, ".rm") || ends_with(file, ".rmvb") || //----添加结束---- #ifdef TIVO_SUPPORT ends_with(file, ".TiVo") || #endif ends_with(file, ".mov") || ends_with(file, ".3gp"));
-
至此,源代码修改已经完成,接下来进入编译环节。
源代码重编译
-
安装环境
sudo apt-get install build-essential libexif-dev libjpeg-dev \ libid3tag0-dev libFLAC-dev libvorbis-dev libsqlite3-dev libavformat-dev \ autoconf automake gettext
需要注意的是,本阶段和别人不同的地方在于增加了 gettext 包环境。
-
编译
./autogen.sh ./configure make
需要注意的是,在make过程中,可能会报错,这是由于没有gettext包环境导致的,重新安装对应依赖包,重新 configure,再 make 一遍。
无法获取't-da.gmo' 的文件状态(stat): 没有那个文件或目录
程序部署
-
针对上面的 OMV 程序我们需要将我们编译好的 minidlna 执行文件,替换掉之前运行的 1.2.1 版本。之所以不直接重叠安装,是因为 OMV 插件安装的 minidlna 的执行路径是 /usr/sbin/minidlnad,而通过源代码方式安装的执行路径是 /usr/local/sbin/minidlnad,所以无法直接使用 install 覆盖安装。
# 首先,停止当前的mnidlna服务。 sudo service minidlna stop # 替换编译好的执行文件 sudo cp minidlnad /usr/sbin/ # 重新启动minidlna服务 sudo service minidlna start # 查看minidlna服务状态是否是“active (running)” sudo service minidlna status
-
对应于其他非OMV场景的DLNA,可直接安装。(未验证,参考@haven200的教程,但是在此处需要指出该链接教程有较多问题,不要直接使用,仅供参考)
make install sudo cp ./linux/minidlna.init.d.script.tmpl /etc/init.d/minidlna sudo cp ./minidlna.conf /etc/minidlna.conf # 开启minidlna服务 sudo service minidlna start # 以下按需使用 # 重启minidlna服务 sudo service minidlna restart # 停止minidlna服务 sudo service minidlna stop # 查看minidlna服务状态 sudo service minidlna status
miniDLNA配置
如果是OMV,可以直接通过网页进行配置,比较简单,这里需要注意的是所选的共享媒体文件夹,需要赋予权限给 minidlna 的用户,才能够保证正常运行。
如果是其他Linux系统,可以通过修改/etc/minidlna.conf
来进行配置,最后,通过添加文件路径来实现共享媒体文件夹的设置,再其后添加共享路径即可:
//直接添加路径即可,注意路径需赋予 minidlna 用户读取权限,可以有多条
media_dir=/srv/dev-disk-by-uuid-6283501d-3173-4b54-b137-1dad445d941/Movie/
media_dir=/srv/dev-disk-by-uuid-6283501d-3173-4b54-b137-1dad445d941/Music/
已经修改好的源代码和在 D2550 amd64 Debain 环境下编译的执行程序,无需修改,直接使用。
链接地址:https://pan.baidu/s/1g9_biTVcvPwDz1hQg57Jjg
提取码:n9k6
注意:如果直接使用我已经编译好的 minidlna,记得在复制进/usr/sbin/
后,赋予其执行属性chmod +x minidlna
。
让minidlna支持软连接(symbolic link)
在minilna的配置文件里面,/etc/minidlna.conf
的参数修改为wide_links=yes
,这样minidlna就会支持软连接了。
注意事项
- 注意修改不要出错,修改本质是增加了一些 rm、rmvb 的判断和其解码器的判断。因为据说FFmpeg 早已支持对 rm 视频的解码。
- 注意,如果你用的 OMV 系统,不要直接用 make install 来覆盖安装,因为源代码和 OMV 插件的执行程序安装路径不同。
引用参考
- MiniDLNA 1.1.4 添加对rmvb格式的支持
- 让minidlna支持rmvb格式电影
- MiniDLNA 1.2.1编译 添加对rmvb格式的支持
- 树莓派编译MiniDLNA 1.2.1 添加对rmvb格式的支持
- https://sourceforge/p/minidlna/discussion/879957/thread/d4d41ca7/
版权声明:本文标题:OMV - open media vault 中 miniDLNA 增加支持 rm、rmvb 视频方法 (也可用于其他Linux系统教程,如其他NAS) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729338489a1197277.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论