利用第三方解码器ffmpeg让群晖DSM6.2.4版本的Video Station支持DTS视频编码和EAC3音频编码

Posted Maverick4534

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用第三方解码器ffmpeg让群晖DSM6.2.4版本的Video Station支持DTS视频编码和EAC3音频编码相关的知识,希望对你有一定的参考价值。

前言

截至2022年5月6日,此方法可用!

本文章可以解决群晖版本6.2.4-25556 Update5(Video Station版本2.5.0-1656)在播放dts、eac3音频编码的视频时提示不支持的问题。

对于群晖6.2.3版本,Video Station版本2.4.9,网上随便搜的方法都可以使用,但是用在6.2.4未必可行。原因在于Video Station版本2.5.0新增了一个高级媒体插件(advanced media extensions)更新,解决步骤只是多1-2条命令。

一、安装ffmpeg

1、社群安装

(我是很久以前添加的,现在该方法好像不行了,需要特殊处理)

打开套件中心,在“常规”,打开信任“任意发行者”;在“设置” ,"套件来源"新增http://packages.synocommunity.com

之后就在社群搜索安装ffmpeg,目前社群版本是4.4.2-43

  2、离线安装

(1)到github上下载相应ffmpeg套件(目前版本是4.4.1)。

网页地址:https://github.com/th0ma7/synology/tree/master/packages

根据自己的cpu及机型选择对应的spk进行下载,之后“手动安装”就可以了。

x86_x64版本链接:https://github.com/th0ma7/synology/blob/master/packages/ffmpeg-4.4.1/ffmpeg_x64-6.1_4.4.1-40.spk

(2)另一种离线的方法是在社群下载

网页 :https://synocommunity.com/package/ffmpeg

 二、停用Video Station服务

 很多人在网上搜到方法但是按照教程一步步来就是没成功,就是没有对服务进行重启,这里可以先把服务停掉,操作完再打开服务。

三、打开群晖的SSH功能服务

控制面板 - 终端机和SNMP - 启动SSH功能,端口默认22

 四、调用ffmpeg处理Video Station视频

1、SSH连接群晖,Windows系统可以使用putty工具,Mac、Linux系统直接使用ssh命令

ssh admin@192.168.50.254

sudo -i 切换到root权限

ssh admin@192.168.50.254
sudo -i

根据实际情况更换成群晖的ip地址

2、备份Video Station的原ffmpeg文件,mv命令 -n的参数是表示不覆盖已存在的文件

mv -n /var/packages/VideoStation/target/bin/ffmpeg /var/packages/VideoStation/target/bin/ffmpeg.orig

3、备份Video Station的原libsynovte.so文件

cp -n /var/packages/VideoStation/target/lib/libsynovte.so /var/packages/VideoStation/target/lib/libsynovte.so.orig

 4、备份群晖CodecPack原版的ffmpeg文件(群晖6.2.3不用该步骤,但是6.2.4必须使用)

把文件夹内的ffmpeg27 、ffmpeg33 、ffmpeg41均备份

cp /var/packages/CodecPack/target/bin/ffmpeg41 /var/packages/CodecPack/target/bin/ffmpeg41.orig
cp /var/packages/CodecPack/target/bin/ffmpeg33 /var/packages/CodecPack/target/bin/ffmpeg33.orig
cp /var/packages/CodecPack/target/bin/ffmpeg27 /var/packages/CodecPack/target/bin/ffmpeg27.orig

 5、用网上魔改的ffmpeg脚本替换Video Station原版的ffmpeg

基本命令格式为echo "base64加密字符串" | base64 -d | gunzip > ffmpeg

网上有一些脚本里面的bin2处是bin2=/var/packages/VideoStation/target/bin/ffmpeg-BACKUP,

但是在上面步骤2的时候又备份成了/var/packages/VideoStation/target/bin/ffmpeg.orig

两者不一致的话就会在真正使用的时候出现各种问题,比如不显示字幕等

 完整代码命令(已经修改了bin2处的ffmpeg名称问题)如下:

echo "H4sIAFKgdGIAA+1abXPbNhL+LP4KhJVf5Jimybn74gwz8dhKqmlceyzXnZvER0EkKLGmSJaAqLiO//stCJDiq6S0d53pTT2TRAKeXTwAHiwW63z3Sp/6oT7FdK4oCUkt1TBVRbGDaHY4eFZ6xJlHSO0fupgRdPB671/a3kLbc9He92d7V2d744MB0lD/mbKE4IXvvvBvhorevkU6W8S65y1iMjsBb8qL8GrHOMFl14D+irwocJG2QoZ5Ct8ocZFK9X+fHPX1bxq6+LHQvt7JgpFkkTFIFuV+reTrhDKXJInS45SRenR0hH4Yffx48f3o4yWCb6rSe/SDAGl3w9srmIQz9wM39l0VmW91l6R6uAwCPhhLcIyyEdF49IGjFQUnztyaLEO8IEjDcr4HVD85ok9hBAM+2bp+AO3OkiENuuwDpHnImCghpr/D0JwoQM3q9xW+9ouUWv13ipiqpfaf350hzXhRlXzylvr+/VWfT0YBaRiWnuJEj7HziGeEyrXSGU5mhGXaES0ca9aw975LojHDzI/CpsVJlPgzWIwZtQ4HipI6kUscS/3hGvS3gvUk6NMn1P8OaTOGTtHDg+JGioMpEZrxQ6Wn+QOl16Nz32Pw7yJKfWLxTvjC3b62DlXNVzM8AN+8AYv5CjsOCcp2sqlhKdur9jRjWTanknfNWjRXjb2ynddu51VNFjguGxUwaC+APd+Fr9YkO1B9Y73/Z3L3AeGhTwBPJSkL8WVGD28QmxNYyF5Prv5k+2bHSTQF+aUIzkeUII2SgDjMFuqhqJ+RgeZ5tLJJyBKfUCTFlo1hC/lGHnKJh5cBs8IoTvyQ2Ss4KzFJqGWchdEjebIMoJztKg8Rc4IhRIT8GBR8gYsHQvkf05aj/FHOJKCEU8d/raX2fCHFo0FJf4VCCcWOItTpRiERMV4EzJvb64vheIzGd+e3d+h2eI/6cMGgy3Efwhg67PMwOEA3o0vEg42IqjIIuX5iTeCvjL/aF43qRIHI6juw3Q5mReQH2Iue8khjLwjDcFvwyPjLr0hL0MGJsDiYSF6Xw/vRxTC7IPqiS5U9V9f3o6G4OuRCABkCx0gDAs983p/ePUCUzAJWSFY8ZvGPBk3zj+b6o5HSolV83DWkUVo/7zCYiCh0feLlyBvbwwji1zKB29OmhDyu+1Pabifbu+xM6ReHOHj6jbgcAoEdnBin4mcNla42Q7MA53dN12+fVa3ZLDXHfkzOTuGDjI6njanVjUvNrcYZw7QStmUkLS4HCKUpxjG4eED7+6UoK6NGhrjCPpym00rEpQ4OiL2SYRs0BnewvNI1Im51a2Xp+uyg0no2t06OeOtk7WS+yQkYFHAgH5Ds6IjBX9D5j5eVpvnLmmFlO1J+MQlMNl/gtnYDY6wdnHlRssAQa1LDPJ6vlnEQYfcYzhLFicX/iA0o4uHmYXZ0xqPUOsLWHco9z0Bl1ZQ7yzpJa7dw2rj1K0NUr/qKXIs+J4qfGqpttcw5tPSZ9b7ca8YSN1hKsRqZCAN/6mHsVERYngbOnXLQIO/NJ9LeWxz0em/bVuDajNr9lzsb7rs2Ercus1E3ry7XtGtD8bR9M+vtBb1pVS64Uyq4Qyb19vXEN2SQZcd1IUu/vJnnFYw2tNch/TaLtDU1pWS2gKzDFie089aqoNpnuRGT33LtmAqTwKfMZk8x2UamAG7m0wWrUWrCxFMjoNkFajN/0cmoAmpnswkimbRDKmuziUQZs3lFuim0IhoMbJcEDO/CQyC3s2nFtXCq4SrMKGTdzA6XiylJtnErYzez24Cs8WtFiuwodH3IbZc4sHlSThKbJRiyik6anQYdmc+O8DzL2goX8S+NfNcOyQyyvpTYrDOlbQA7ouAWWB5EO2EZqym8Fh7tMAptePB4CTwtOnm1QNuZbQdKbpuA8qH/xV4sv/jhzP51SZaQe/u/NQ5sPmwruH3gzdCuGkO+EJUyQ/liaXakzcJE5dkoXeYlC5GZyJcdT094llLLTPLBpktPsjZOzX885tl6OVEQyEpikW/RduO09KatZC7dbkuJSNsrOEvAfZ6Dq1R//qzCK/ezetZ/hofuy/FndY4Td4UTwo9PmFWKoJclS3K8K9jDQPNYV0UBs1JoIyGeBsTlb2kIK+QLcXj8g/c0r6O+3qMTRclXf10Oostp4sfFDvSUvPT5/v3VzfCDeBfzEp+ad1xcXw4v5INZOsq7bs5vz6/ux9Alm7KiLwwo64/QqvQyb5W3Ndp/u6Uei/YVhQSSvbdmv/gF8L+XvPenkgdx5SPd5yyAhMjo0WH18TgoWJ2XsPibCecljsuhrI7/fHt+o3asklH1/PON8Jx5MywxZTjMfNYt44G1WB4jXx6J3XGF4EQpeTXd6r+S1Zms8M5LRUCxqLUrK+yz9fdM1rOExACPwpQkFE4D8vj95L5Stw399au0HWa1tigmIcRMBLvAwNM32P8UJsSJZiHEHBfciLrHrsajMMWB76KsiuVFy9BFK1A0Aj04hFLOyA/jJdvmUcbR8u8vxO8uhj/mv7/ojA7SZnx3ef3THWrIasJgRbPq4D+3kJi0Ke9mdDNE4/ua+Iym+ESH2Ty7mSoN1KJKuC+6VVm2NsvWprQ2O63NhqblSLzWUgkFZt6+k9Z7ZaH3Nim9V5c6PyZ/y/0vIvf7cZfczS65G7vIPaV/RO6d1oXcC1nLkXK5F8fATL/l8vtb7v/3cr++HX3oyiuasvrztEMZbHnLaoCmGKEAPzwsQ7TK8g0GSAsYMk7z18l/cQk5uc5dbP4urehStv/fhf8A28uH79shAAA=" | base64 -d | gunzip > /var/packages/VideoStation/target/bin/ffmpeg

6、给/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

7、给Video Station添加 DTS、EAC3、TrueHD支持

sed -i 就是直接对文本文件进行操作的。将文件内所有的关键字进行替换

sed -i -e 's/原字符串/新字符串/' /home/1.txt,以前旧版本的Video Station是支持dts音频编码的,后面阉割掉了

sed -i -e 's/eac3/3cae/' -e 's/dts/std/' -e 's/truehd/dheurt/' /var/packages/VideoStation/target/lib/libsynovte.so

8、将魔改的ffmpeg替换CodecPack包里面的ffmpeg,(群晖6.2.3不用该步骤,但是6.2.4必须使用)

cp /var/packages/VideoStation/target/bin/ffmpeg /var/packages/CodecPack/target/bin/ffmpeg41
cp /var/packages/VideoStation/target/bin/ffmpeg /var/packages/CodecPack/target/bin/ffmpeg33
cp /var/packages/VideoStation/target/bin/ffmpeg /var/packages/CodecPack/target/bin/ffmpeg27

9、在套件中心将Video Station服务启动,如果你不怎么用SSH的话,将群晖的SSH服务关掉,如果要用SSH,设置一个复杂的管理员密码,并改掉默认22端口。

10、搞完收工,现在支持dts,eac3,truehd的音轨了。 

bug

上面的方法有一个bug就是不能使用离线转码

重要提示:

在使用ds video app播放视频的时候,登录后在app的设置——影片设置——视频转码(关闭)

不然在“视频转码(打开)”的情况下,会提示“无法播放视频,错误代码413”

如何让群晖支持DTS转码

目前DSM已经更新到6.1.1


安装ffmpeg套件

添加源,http://packages.synocommunity.com


支持的构架查询

https://synocommunity.com/package/ffmpeg


https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model


或者直接下载手动安装:

https://guillaume.smaha.net/syno/




比如我的216+II

就下载ffmpeg_braswell-6.0_3.1.2-2.spk


然后IPAD只用装一个VLC就可以了,NAS可以实现转码,让IPAD顺利播放。



以上是关于利用第三方解码器ffmpeg让群晖DSM6.2.4版本的Video Station支持DTS视频编码和EAC3音频编码的主要内容,如果未能解决你的问题,请参考以下文章

iOS利用FFmpeg解码音频数据并播放

ffmpeg文档15-编码器

Android Multimedia框架总结(二十六)利用FFmpeg进行解码直播流

ffmpeg如何从url获取视频帧数据

安装ffmpeg

FFmpeg进行音频的解码和播放