如果不想看原理,直接拉到最后
ds218play使用的是arm架构,cpu是realtek rtd1296,硬件能力如下
硬件本身解码能力很强大,但是只能对aac音频格式的视频文件硬件转码,DTS、EAC3、TrueHD 因为专利问题官方不支持(专利费的问题)
经过分析播放流程有两条
原始文件串流 不对视频进行修改
原始文件 -> ffmpeg(切分HLS)
该流程的好处是视频质量高,但是需要高带宽,适合局域网使用,坏处也很明显,在外网情况下带宽无论如何都是不够的,而且源文件直接串流的话需要非常多的流量,看源文件尺寸
通过硬件解码重编码,流程如下
原始文件 -> gstreamer(硬件解码 -> 硬件编码) -> ffmpeg(切分HLS)
该流程的好处是可以根据网络情况直接选择不同的清晰度,通过重新编解码让视频更适合外网访问,流量更少,并且播放速度更快
但是因为DTS、EAC3、TrueHD专利的问题 群辉本身是不支持对DTS、EAC3、TrueHD文件的转码的,所以群辉的内置VideoStation就成了摆设,如果是其他CPU型号可以使用Plex、jellyfin一类的三方解决方案
虽然plex、jellyfin在ds218play上也可以使用,但是不能开启硬件加速,如果不能使用硬件加速,仅凭rtd1296的CPU算力根本不够对视频文件的处理,plex就算选择最低的转码格式,也依旧卡而且CPU直接100% 系统会无响应
经过一周的折腾,不断试错,从Ubuntu中迁移了下面两个模块,终于可以让VideoStation实现DTS、EAC3、TrueHD的转码播放
https://launchpad.net/ubuntu/wily/arm64/gstreamer1.0-libav/1.5.91-1
gstreamer1.0-libav_1.5.91-1_arm64.deb
- libavcodec-ffmpeg56_2.7.6-0ubuntu0.15.10.1_arm64.deb
- libavformat-ffmpeg56_2.7.6-0ubuntu0.15.10.1_arm64.deb
- libavutil-ffmpeg54_2.7.6-0ubuntu0.15.10.1_arm64.deb
- libbluray1_0.8.1-1_arm64.deb
- libgme0_0.5.5-2.1_arm64.deb
- libgnutls-deb0-28_3.3.15-5ubuntu2_arm64
- libgnutls-deb0-28_3.3.15-5ubuntu2_arm64.deb
- libgsm1_1.0.13-4_arm64.deb
- libhogweed4_3.1.1-4ubuntu0.1_arm64.deb
- libmodplug1_0.8.8.5-2_arm64.deb
- libnettle6_3.1.1-4ubuntu0.1_arm64.deb
- libnuma1_2.0.10-1ubuntu6.1_arm64.deb
- libopenjpeg5_1.5.2-3.1_arm64.deb
- libopus0_1.1-0ubuntu2_arm64.deb
- libp11-kit0_0.23.1-3_arm64.deb
- libpng12-0_1.2.51-0ubuntu3.15.10.2_arm64.deb
- librtmp1_2.4+20150115.gita107cef-1build1_arm64.deb
- libschroedinger-1.0-0_1.0.11-2.1build1_arm64.deb
- libshine3_3.1.0-2.1_arm64.deb
- libsoxr0_0.1.1-1_arm64.deb
- libspeex1_1.2_rc1.2-1ubuntu1_arm64.deb
- libssh-gcrypt-4_0.6.3-3ubuntu3.2_arm64.deb
- libswresample-ffmpeg1_2.7.6-0ubuntu0.15.10.1_arm64.deb
- libtasn1-6_4.5-2ubuntu0.1_arm64.deb
- libtheora0_1.1.1+dfsg.1-7_arm64.deb
- libtwolame0_0.3.13-1.2_arm64.deb
- libva1_1.6.0-1_arm64.deb
- libvpx2_1.4.0-4_arm64.deb
- libwavpack1_4.75.0-1_arm64.deb
- libwebp5_0.4.3-1.3_arm64.deb
- libx264-146_0.146.2555+git0c21480-1_arm64.deb
- libx265-59_1.7-4_arm64.deb
- libxvidcore4_1.3.4-1_arm64.deb
- libzvbi0_0.2.35-9_arm64.deb
https://code.launchpad.net/ubuntu/xenial/arm64/gstreamer1.0-plugins-bad/1.6.0-1ubuntu1
gstreamer1.0-plugins-bad_1.6.0-1ubuntu1_arm64.deb
- libdca0_0.0.7-2_arm64.deb
- liborc-0.4-0_0.4.26-2_arm64.deb
该方法只适用于realtek rtd1296 CPU的群辉,并且系统为DS 6.2.4版本 其他机型不支持
使用root权限 登录群辉 执行如下脚本
curl https://git.js-css.com/nap/VideoStation-FFMPEG-Patcher/raw/branch/master/patcher.sh | bash