群辉升级后,因为版权问题,VideoStation 不支持播放 EAC3 格式的视频了,导致我大量视频都没法用 AppleTV 播放。
网上早期流传了各种方案,比如回退 VideoStation 版本等,都试过了,没啥用。
2024 年 3 月,下载了 《三体 网飞版》,不小心下到了 EAC3 的音频版本,没法在 AppleTV 播放。今天实在忍不了,静心学习,搜到了切实可行的解决方案:
-
停止 VideoStation
-
安装好“Advanced Media Extensions”
-
更改套件来源为 imnks
-
安装好 ffmpeg 4
我之前安装的是 ffmpeg 6,不行。需要安装 ffmpeg 4。 -
然后 ssh 登录到群辉,切成 root 账号,手动一条条执行下面的指令。
#备份 VideoStation's ffmpeg
mv -n /var/packages/VideoStation/target/bin/ffmpeg /var/packages/VideoStation/target/bin/ffmpeg.orig
#下载ffmpeg脚本
wget -O - https://gist.githubusercontent.com/BenjaminPoncet/bbef9edc1d0800528813e75c1669e57e/raw/ffmpeg-wrapper > /var/packages/VideoStation/target/bin/ffmpeg
#设置脚本相应权限
chown root:VideoStation /var/packages/VideoStation/target/bin/ffmpeg
chmod 750 /var/packages/VideoStation/target/bin/ffmpeg
chmod u+s /var/packages/VideoStation/target/bin/ffmpeg
# 备份VideoStation's libsynovte.so
cp -n /var/packages/VideoStation/target/lib/libsynovte.so /var/packages/VideoStation/target/lib/libsynovte.so.orig
chown VideoStation:VideoStation /var/packages/VideoStation/target/lib/libsynovte.so.orig
# 为libsynovte.so 添加 DTS, EAC3 and TrueHD支持
sed -i -e 's/eac3/3cae/' -e 's/dts/std/' -e 's/truehd/dheurt/' /var/packages/VideoStation/target/lib/libsynovte.so
#备份CodecPack的ffmpeg41
cp /var/packages/CodecPack/target/bin/ffmpeg41 /var/packages/CodecPack/target/bin/ffmpeg41.bak
#链接ffmpeg解码模块
cp /var/packages/VideoStation/target/bin/ffmpeg /var/packages/CodecPack/target/bin/ffmpeg41
synopkg restart VideoStation
- 大功告成。
Special Thanks To:
- 脚本来源: keevinzha.com
- 文章作者: keevinzha
- 文章链接: https://keevinzha.com/article/2023-03-07_Synology-unlock-VS
上面的脚本为什么能工作呢?猜测是这几个方面的原因:
- 为了合规,libsynovte.so 中主动禁掉了 EAC3、TRUEHD 和 DTS 音频。遇到这几种音频格式的时候它可能就不会去调用 ffmpeg 来做解码。脚本通过 sed 命令行 libsynovte.so 不再阻拦这三种格式。
libsynovte.so 是群晖(Synology)NAS系统中的一个动态链接库文件(Shared Object)。根据其命名,libsynovte 很可能是群晖视频转码引擎(Video Transcode Engine)的缩写。
- BenjaminPoncet ffmpeg-wrapper 取代了标准 ffmpeg,这个 wrapper 的作用是将对 VideoStation 自带的 ffmpeg 的调用重定向到第三方提供的 ffmpeg。群辉自带的 ffmpeg 中也阉割掉了 EAC3、TRUEHD 和 DTS 音频支持。
这里有两个 ffmpeg,一个是群辉提供的阉割版,一个是第三方全功能版
bin1=/var/packages/ffmpeg/target/bin/ffmpeg bin2=/var/packages/VideoStation/target/bin/ffmpeg.orig
总结下来,就是让 VideoStation、CodecPack 等群辉提供的软件包,使用第三方的 ffmpeg 来做解码,规避群辉不再支持 EAC3 等格式的问题。