OMV - open media vault 中 miniDLNA 增加支持 rm、rmvb 视频方法 (也可用于其他Linux系统教程,如其他NAS)

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下载地址

  1. 针对我们目标环境,需要下载对应的“minidlna-1.2.1.tar.gz”的包(大小为459.5 kB)。下载该版本的原因是,目前OMV系统中的minidlna也是这个版本,其支持插件应该兼容性更好,且在实际操作中要替换原有的执行代码,所以最好使用同版本的。

  2. 接下来将对应的包在Linux中解压:

    tar -xzvf minidlna-1.2.1.tar.gz

  3. 修改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"));
      
      

至此,源代码修改已经完成,接下来进入编译环节。


源代码重编译

  1. 安装环境

    sudo apt-get install build-essential libexif-dev libjpeg-dev \
    libid3tag0-dev libFLAC-dev libvorbis-dev libsqlite3-dev libavformat-dev \
    autoconf automake gettext
    

    需要注意的是,本阶段和别人不同的地方在于增加了 gettext 包环境。

  2. 编译

    ./autogen.sh
    ./configure
    make
    

    需要注意的是,在make过程中,可能会报错,这是由于没有gettext包环境导致的,重新安装对应依赖包,重新 configure,再 make 一遍。

    无法获取't-da.gmo' 的文件状态(stat): 没有那个文件或目录
    

程序部署

  1. 针对上面的 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
    
  2. 对应于其他非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.com/s/1g9_biTVcvPwDz1hQg57Jjg
提取码:n9k6

注意:如果直接使用我已经编译好的 minidlna,记得在复制进/usr/sbin/后,赋予其执行属性chmod +x minidlna

让minidlna支持软连接(symbolic link)

在minilna的配置文件里面,/etc/minidlna.conf的参数修改为wide_links=yes,这样minidlna就会支持软连接了。

注意事项

  1. 注意修改不要出错,修改本质是增加了一些 rm、rmvb 的判断和其解码器的判断。因为据说FFmpeg 早已支持对 rm 视频的解码。
  2. 注意,如果你用的 OMV 系统,不要直接用 make install 来覆盖安装,因为源代码和 OMV 插件的执行程序安装路径不同。

引用参考

  1. MiniDLNA 1.1.4 添加对rmvb格式的支持
  2. 让minidlna支持rmvb格式电影
  3. MiniDLNA 1.2.1编译 添加对rmvb格式的支持
  4. 树莓派编译MiniDLNA 1.2.1 添加对rmvb格式的支持
  5. https://sourceforge.net/p/minidlna/discussion/879957/thread/d4d41ca7/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值