其他 / 群晖 · 2022年12月16日 0

群晖 DS218Play VideoStation 支持DTS、EAC3、TrueHD 硬件解码

如果不想看原理,直接拉到最后

ds218play使用的是arm架构,cpu是realtek rtd1296,硬件能力如下

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