请打开!NAS的硬件转码真的很重要!实时转码哪种效率更高?硬解使用场景有哪些?各NAS如何开启硬件转码
开篇碎碎念
大家好,相信不少朋友有玩NAS,有NAS自然会部署Jellyfin/plex/emby等影音服务器来管理你的影片资源。我是Jellyfin的重度使用者,下图就是我在NAS上部署的Jellyfin。
当你了解了Jellyfin/plex/emby后,肯定会知道硬件实时转码,当我们远程连接NAS中的Jellyfin影音服务器播放影片时,实时转码这个功能非常好用。
一些高端大佬可能会说,实时转码就是鸡肋,现在硬件那么强,哪个播放器不能流畅播放8K等电影呢?非也,非也,要先看看是用在什么场景上。
实时转码可以把高分辨率、高码率影片实时转成低码率影片进行实时远程串流播放,毕竟远程嘛,不像局域网内带宽那么大,所以这是实时转码的一个重要使用场景。
如下图,手机限速为3兆了,代表远程播放NAS中电影只有3Mbps速度,就可以把100兆码率的4K电影实时转成720P、码率为3兆的影片实时流畅播放,这样是不是很好理解?
就算转成720P 3兆码率,感觉清晰度也比爱、优、腾那些1080高清多了,哈哈。
关于硬件转码或硬件加速,以Jellyfin为例,官方页面也有说明的。开启硬件转码也就是调用集显来进行视频转码,可以降低处理器资源占用。
所以本篇来介绍一下常见NAS如何开启硬件转码、硬件转码的其它使用场景、以及各种硬件转码方式应该如何选择,话不多说,进入正文。
各品牌NAS如何开启硬解
以常见Docker安装Jellyfin、emby、plex为例,来说说如何开启硬件转码;我最常用的是Jellyfin,就以它来举例,其它emby、plex在安装时也是同理。
群晖NAS在Docker中部署Jellyfin时,勾选使用高权限执行容器即可,这样Jellyfin就有调用集显的权限了,也就能实时转码了。
群晖安装Jellfyin并开启集显转码,可以参考我这篇文章,完整的安装和设置教程。顺便说下,目前群晖新品DS923没有集显了,让上代DS920+销量更上一步,所以对集显转码有需求的朋友,不要考虑DS923即可。
威联通的话,我使用的是TS-462C,N4505处理器,4盘位NAS,目前价格非常有性价比。
威联通可以通过Compose命令形式安装并赋权集显,或者开启SSH,使用以下命令进行安装。
感兴趣的朋友可以看看我之前发的威联通安装Jellyfin的教程。
绿联的话,目前手上有一台DX4600,N5105处理器,配置拉满,非常适合新手上手,感兴趣朋友可以看看我之前的分享。
在安装时勾选『硬件渲染』即可,这样容器就有调用集显的权限,也就能在Jellyfin中开启硬件转码了。
实时转码的应用场景
以剪辑软件来看,实时转码会用得上,把一些4K原始影片转成低占用的,方便剪辑过程中预览,像我平时使用Final cut pro来剪辑时就会生成代理媒体,猜测大概是这原理,不是专业影视行业从业者,如有不对请指正。
我主要说说实时转码在NAS上,或者说在影音服务器中的使用场景吧,也是我个人比较常用的场景。
一般玩NAS的朋友会经常听到实时转码,我们在NAS上部署Jellyfin/ebmy等影音服务器时就会用到这个功能。
应用场景1:让低端设备流畅播放高清影片
像我手上有一台安卓投影仪,因为处理器比较低端,只能播放最高分辨率为1080P且编码为H264的视频,遇上H265/HEVC编码的视频就没办法播放了,一卡一卡的。或者说普通H264 1080高码率的影片它也无法正常播放,720P对于它来说是最好的。
比如说下图这个编码的视频它就无法流畅播放了,HEVC编码,因为这个编码是近年来普及的,这台投影仪多年前就生产了,无法流畅播放也是正常的。
所以这个时候,实时转码就派上用场了,在安卓投影仪上装上Jellyfin,在播放时选择一个低分辨率,如720P,此时实时转码开始了,把1080P高码率的影片转成720P 4Mbps低码率的视频,实时传输到投影仪上播放,就能完美流畅播放了,对于一些低端播放器非常友好,此为应用场景之一。
希望这样举例大家可以理解。
应用场景2:高码率影片转成低码率进行远程串流播放
第2个应用场景是我最常用的,现在有这么一个用法,我在NAS中部署了Jellyfin影音服务器,我在外网情况下通过流量连接NAS进行观影,但是我的手机流量限速了,只有3.1Mbps速度。
但一部电影的码率如下,9492kbps即约9Mbps码率,相当于原画质播放的话,至少需要9Mbps的带宽才能流畅播放,我的NAS上行带宽有30兆,但我远程连接NAS的手机速率只有3.1兆,所以这部9兆码率的电影无法流畅进行播放,手机限速后它只能流畅实时播放3.1兆码率的影片。
那算怎么办呢?此时,实时转码的威力就体现了,那么我就在播放时选择一个480P-3Mbps的分辨率就行了,实时转码就会把1080 9兆码率的影片实时转成480P 3兆的影片,实时往手机串流播放,这样,3.1兆速度的带宽也能流畅进行观影了。
就算你是4K 100兆码率的影片,也能实时转成3兆码率进行远程串流播放,这就是实时转码的常用场景了。
如下图,原始影片为1080,码率为12Mbps,如果用我8Mbps的带宽速度来看,是没办法流畅观看的,但是我选择转码为低于8Mbps就可以流畅观看了,实时转为8兆码率影片,这样远程就可以流程通过8兆带宽播放。
希望以上两个使用场景可以让各位理解实时转码在NAS影音服务器上的作用。
哪种转码方式效率更高?
安装完Jellyfin后,在控制台-播放,转码选项处开启时会发现,有多种转码方式可选,比如常见的有AMD AMF、Nvidia NVENC、Intel QuickSync、VAAPI、Apple VideoToolBox、Video4Linux。
那么这几种转码方式应该如何选择呢?或者说,如果根据自己的处理器选择合适的转码方案呢?
我简单查了一下这几个转码方案的细节。非相关从业人士,多为百科查询而来,如有说错请指正。
AMD AMF:AMD处理器专有,AMF全称Advanced Media Framework,简译为高级媒体框架。此SDK可用于开发无线显示,远程桌面,视频编辑,转码和回放应用程序。使用AMD处理器或显卡的可选此项。
Nvidia NVENC:NVENC是英伟达的专有技术,NVENC 是 GeForce GPU 的一个独立部分,用于对视频进行编码,从而减轻了CPU 的负担。使用英伟达显卡的可选此选项。
Intel Quick Sync:Intel Quick Sync Video是由英特尔提供的快速视频转换技术,利用支持QSV的硬件可显著加速视频编解码能力,可被应用于播放器和视频编辑软件。使用英特尔处理器的可选此项。
VAAPI:是一套 Intel 提供的视频硬件编解码的开源库和标准。例如可使用这套API使用英特尔GPU的硬件加速能力,也就是通过此API可调用英特尔集显。
Apple VideoToolBox:有Apple字眼,顾名思义是苹果的相关标准,IOS8后开放了这套API,一个底层视频硬编解码框架,纯C语言API,可直接访问硬件的编解码器;一般影音服务器装在服务端,没在果子机器上装过,所以这个我没机会尝试。
Video4Linux:Video4Linux(简V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编 程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。
我手上只有英特尔处理器,没有AMD的处理器测试,以英特尔来说,选择Intel Quick Sync转码效率比VAAPI更高,像群晖上,比较常用的转码方式就是Intel Quick Sync和VAAPI。
但一些比较老的处理器如J1900,选择Intel Quick Sync会提示报错,只有选择VAAPI才可正常转码,加上这些老赛扬处理器集显性能本就很差,所以开和不开集显转码也是没差别,J1900转个1080的视频就非常卡顿了。
但是一些较新的处理器,如3865U、N4505、N5105等,你直接选择Intel Quick Sync转码就行了,集显性能强不少,也能正常转码。
以这我台3865U机器为例,装了群晖,装了Jellyfin,在筢Intel Quick Sync时效率就比VAAPI更快,直观感受就是转码时加载速度快,而VAAPI则相比慢半拍。
另一个比较明显的是,选择VAAPI时,处理器占用会比Intel Quick Sync高非常多,感觉就是VAAPI迟滞导致要占用部分CPU资源。
Intel Quick Sync时,转码时,甚至处理器占用没有变化。前提是集显足够强,像N4505,在转4K影片时,处理器占用不过半,如N5105,处理器占用甚至不变化,因为它们的GPU集显够强。
如英特尔QSV,如果你使用的是英特尔处理器,以J1900为例,可以在英特尔官网查询处理器参数,在"英特尔Quick Sync Video"参数处查看是否为『是』,是代表支持,即可选择Intel QSV转码方式。
在硬件加速界面,如选择英特尔QSV,还会有硬件解码选项,这些是否打勾可以根据自己的处理器是否支持这些编码来决定。
如何查这些编码吗,可以在CPUMONKEY网站中查询是否支持,比如可以输入J1900和N4505的对比,往下拉,就可以看到你的处理器是否支持。
可以看到,新款N4505处理器支持的编解码更多,比如J1900不支持H265,4505就支持了。可以对应这里的编解码支持勾选即可,这算是一个比较方便查看处理器编解码的地方了,当然也可以去处理器官网查询。
说了这么多,如果你是较新款的英特尔处理器,无脑选择Intel QSV转码方式就行了。
如有使用其它平台处理器的小伙伴不妨评论区分享下哪种更好。
如何确定是否调用集显进行转码
首先,以Jellyfin为例,打开一部影片插入,选择画质为最低,触发转码。
或者点击齿轮-播放信息,也能看到播放方式为转码,说明触发实时转码。
或者在控制台中找到活动的设备选项,点击感叹号,也能看到当前播放的视频是否处于转码状态。
以上Jellyfin触发转码的查看方式,emby或plex应该也是类似的。
那么如何确定是否调用了集显转码呢?回到Jellyfin控制台,找到日志,随意点开前两个日志。
打开日志后,Ctrl+F键进入搜索,搜索hw关键字即可,如下图,显示有hw_devie qsv-qs@va等关键字,说明集显被成功调用来转码了。
因为我在Jellyfin后台的转码方式选择为Intel QSV,所以如此,如果选择为VAAPI,关键字看看有没有VAAPI就行了,有就代表成功调用集显。
以上方式不严谨,也可以打开SSH,登录后,输入htop命令查看,然后打开播放一部影片转码,找到其中涉及Jellyfin的进程,查看是否有hw_device qsv等关键字,有的话说明是调用集显在转码了。
像我这台3865U,在进行4K实时转码时,除了集显运作外,处理器也能明显看到快占满了,大概率是集显性能不太有余力应对4K转码,所以处理器还是分配了一些压力?但在转1080资源时,处理器占用非常低,所以也只能如此猜测了。
因为另一台N4505处理器的机器在4K转码时,处理器占用才不到30%,因为N4505的集显很强,轻松应对4K转码,所以大概率是如此。
最后的最后
最后,本人非这些相关硬件专业人士,许多概念性东西也是从网上搜寻而来,如有错误,请指正。
主要也是说说硬件转码在NAS上的常用场景,以及自己实测得到的哪种转码方式效率更高,简单分享一下,希望帮到有需要的朋友。
如果有其它更好建议,欢迎评论区留言,喜欢的朋友不妨关注一波,后续分享更多,我们下篇再见。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
蛙爹
校验提示文案
打肿你的脸
校验提示文案
干炒呱唧丝
校验提示文案
山遥路远
校验提示文案
forsxj
校验提示文案
绯红的板砖
校验提示文案
值友3675461083
校验提示文案
fjy0224
校验提示文案
值友2086520531
校验提示文案
无声的野
校验提示文案
洗碗健身
校验提示文案
ET_Jojo
校验提示文案
随风大王
校验提示文案
康夫和强强
校验提示文案
xyzeratul
校验提示文案
BIOS5201
校验提示文案
x七把叉x
校验提示文案
老陆70后
校验提示文案
i迈麦
校验提示文案
i迈麦
校验提示文案
无声的野
校验提示文案
老陆70后
校验提示文案
x七把叉x
校验提示文案
BIOS5201
校验提示文案
xyzeratul
校验提示文案
值友2086520531
校验提示文案
康夫和强强
校验提示文案
随风大王
校验提示文案
ET_Jojo
校验提示文案
fjy0224
校验提示文案
值友3675461083
校验提示文案
干炒呱唧丝
校验提示文案
洗碗健身
校验提示文案
绯红的板砖
校验提示文案
forsxj
校验提示文案
山遥路远
校验提示文案
打肿你的脸
校验提示文案
蛙爹
校验提示文案