本篇是这个系列的最后一篇文章。感谢广大条友对这个系列文章的浏览、转发、评论[作揖],能为大家提供有用的信息,是我的荣幸,也是我的动力。
现在就来说说我在小米盒子3C上安装Kodi遇到的最大的坑。
最早我是在笔记本电脑上安装的Kodi。Kodi在笔记本上运转正常,效果令人很满意。接下来我又把Kodi安装到了家里的小米盒子上。在经历了第三篇提到的“小坑”后,我也顺利在小米盒子上配好了电视“资源”,准备工作一切就绪。
刚开始通过小米盒子观看IPTV,Everything's fine,但很快我就遇到了新的问题。我配置的IPTV频道清单中有中央台、地方台、卫视台、CHC电影等频道,但是所有地方台 几个其他电视频道基本看不了。能正常观看的频道,音视频是同步的,换台时也能做到“随切随换”。而这些看不了的频道,刚开始是先有声音,过好一会才有图像,即便有了图像,图像也是一卡一卡的,“半天”才更新一帧。图像“卡”其实还不是最差的,盒子几次启动后这些频道都变成只有声音没有图像,接着等屏幕上一个表示“缓冲”的蓝圈走到100%,声音和图像就全停了。诡异的是,断电重启盒子后这个现象就会消失。然后随着使用时间的增加,这种异状又将慢慢“浮现”并持续“恶化”,直到故障重现。
根据我的观察,这些看不了的频道都是“576 SD”(标清)的分辨率,长宽比例多为1.19:1、1.33:1、1.37:1。而那些可以正常观看的频道都是“1080 HD”(高清)的分辨率,长宽比例多为1.78:1。
为了解决这个问题,我先用升级“大法”。我把小米盒子上的Kodi从最初的19.4升到了19.5版本,故障依旧。等到Kodi推出20.0,我继续升级盒子上的Kodi,但故障还是没有解决。
为了定位故障根源,我在盒子上启用过Debug日志,安装过远程查看Kodi日志的插件,结果除了找到一条“……halted……”的日志以外,毫无所获。
我在搜索引擎上也查询过Kodi这样的故障。一开始我按照““kodi视频中止”、“Kodi音视频不同步”等关键字搜索,没有找到什么线索(也可能是错过了那些有用的结果)。直到Kodi升级到20.0版本依然无效后的某一天,我又按照“Kodi只有声音没有图像”的关键字搜索,终于找到了一个“关闭Kodi硬件解码解决视频卡顿”的帖子。参考这个帖子提供的方法,我在Kodi“系统”设置——“播放器”设置的“视频”选项页中,关闭小米盒子中开启的2项“允许硬件加速……”的设置。注意:Kodi里“允许硬件加速……”选项只有在系统设置处在“高级”或者“专家”模式时才会显示,其他模式下不行。
小米盒子上Kodi播放器中的允许硬件加速……”设置
关闭Kodi系统设置中2项视频”硬件加速“设置以后,小米盒子上地方台的节目立刻就能正常观看了。换台操作时也非常流畅,和播放中央台、卫视台的效果一模一样。
持续了几个月的问题难道这么容易就解决了?NO,NO,NO!一波刚刚过去,一波又来“侵袭”。
其实这会我也觉得问题应该完全解决了,还激动地发了一条“朋友圈”,纪念这个“成果”。可等我心情平复下来接着使用Kodi时才发现,几个以前一直能正常观看的“1080 HD”的高清频道又开始“卡”了。这几个频道的声音和图像完全对不上。图像滞后于声音,而且就像是开了“慢动作”,“黏糊糊”的,严重影响“观赏”效果。
这必须也只能是关闭Kodi“硬件加速”导致的问题啊!此时我已陷入了一个两难的境地,打开盒子的视频“硬件加速”设置,能看所有1080 HD的节目,看不了576 SD的节目;关闭盒子的视频“硬件加速”设置,能看所有576 SD的节目了,可又看不了部分1080 HD的节目!
怎么办才好?我想了又想,要解决此刻面临的问题也只好按各个“频道”来启用“硬件加速”设置了。可怎么才能实现这样的效果呢?
最先我考虑在m3u文件中增加参数来实现这样的效果,可是通过查询m3u文件所支持的语法,没有发现类似这样的参数项。
接着我又在Kodi的官网查找官方帮助文档,找到了一个名为playercorefactory.xml的配置文件。这个Kodi配置文件可以针对不同的视频(流)文件,启用不同的视频播放器(包括设备上安装的第三方视频播放器)。
这里我要说明一下,Kodi自带的播放器效果其实很一般。如果遇到视频在Kodi里播放卡顿,但用其他播放器却能流畅播放的情况,完全可以通过这个配置文件调用外部播放器(Kodi中称为External player)来处理这样的视频(比如4K、蓝光视频等)。
这个名为playercorefactory.xml的配置文件,可以针对不同的视频文件属性,比如是否internetstream(视频流)、是否dvd、protocols(协议)、filetypes(类型)、 mimetypes(互联网邮件扩展类型)、filename(名称)等设置不同的视频播放器,也能针对不同的videocodec(码流格式)、videoresolution(分辨率)、videoaspect(显示比例)等视频metadata(元)信息设置相应的视频播放器。
<rules action="prepend">
<rule video="true" player="wmplayer">
<rule dvd="true" player="dvdplayer"/>
<rule filetypes="mkv" player="VLC">
<rule filename=".*720.*|.*1080.*" player="MPC-HC"/>
</rule>
</rule>
</rules>
比如上图playercorefactory.xml文件设置的播放规则中,就指定普通视频使用wmplayer播放,DVD使用dvdplayer播放,一般的.mkv类型视频用VLC播放器播放,720P或者1080P的.mkv类型视频用MPC-HC播放器播放。若想进一步了解playercorefactory.xml配置文件的详情,可以参考External players - Official Kodi Wiki网页中的详细说明。
我按照这个配置文件提供的配置思路,先在我的笔记本上对1080P的internetstream设置了本地视频播放器。尽管这个设置确实有效,成功地用本地播放器打开了1080P的电视节目,但是这个“频道”是用Kodi以外的“第三方应用”窗口打开的,来回换台都不方便。我也就很快放弃了这个思路。
虽然这个思路没有走通,但我又在与playercorefactory.xml相同的Kodi目录下找到了1个名为decoderfilter.xml的配置文件。这个文件里既有Kodi视频解码器的相关配置,还有关于视频分辨率的设置,貌似就是我苦苦寻找的设置文件。
decoderfilter.xml配置文件
在Kodi中直接查看decoderfilter.xml配置文件的内容
decoderfilter.xml文件的配置示例
经过网上查询,对于这个配置文件的说明不多,甚至在Kodi官网上也没有找到该文件的说明。我只能在网上了解这个文件的大致用途和设置思路。
在正式修改这个文件之前,我先通过Kodi的“文件管理”对这个文件做了一个备份。然后将文件复制到U盘,再在电脑上对这个文件中所有设置为“<allowed>true</allowed>”的项目(一共11个,我觉得就相当于Kodi能找到的硬件驱动),把对应字段中的<min-height>设置项都改为<min-height>1080</min-height>(原始的decoderfilter.xml文件中,很多这种项目的设置都是0)。改好以后,又通过Kodi“文件管理”功能替换掉盒子上初始的decoderfilter.xml文件。重启Kodi,启用Kodi播放器里2项视频”硬件加速“设置。观看地方台节目,正常。观看音视频不同步的1080 HD频道,视频还是跟不上音频,问题还是没有得到解决!
这个配置文件难道没有生效吗?仔细想想,文件中的配置其实已经生效了!我已经可以在启用Kodi视频”硬件加速“设置的情况下,正常观看576 SD的电视频道了!但是一部分需要硬件解码的1080 HD节目仍没有成功启用视频”硬件加速“,导致音视频依旧不同步。所以这个配置文件里的<min-height>1080</min-height>的设置含义应该是“大于”而不是“大于等于”1080P(也就是没有包括1080P的视频文件)的意思。
想到这里,我就再次修改了decoderfilter.xml配置文件。这次,对于属性为<allowed>true</allowed>的所有11个项目,把对应字段中的<min-height>设置项都改为<min-height>720</min-height>。再次重启Kodi,这一次所有频道终于都可以正常地观看了!!!
至此,这场开始于笔记本,终结于“小米盒子3C”的Kodi奇遇终于“圆满”了。
总结一下:
1、小米盒子上576 SD等低清晰度的电视频道不需要视频”硬件加速“,但是部分1080 HD的频道需要。启用视频”硬件加速“会影响576 SD等低清晰度电视频道的播放。为同时满足不同清晰度视频不同的硬件需求,要在打开Kodi视频”硬件加速“功能的情况下,再通过decoderfilter.xml配置文件按视频流的清晰度限制视频”硬解码“的工作范围,做到只对高于720P的视频流才真正启用视频”硬件加速“。
2、”硬解码“使用专用硬件芯片转换视频流格式,效率高,资源占用率低。“软件解码”使用CPU转换视频流格式,效率低,资源占用率较高。关闭”硬解码“后,如播放视频时系统资源占用率不高,可保持此设置;如播放视频时系统资源占用率过高,影响播出效果,还是应启用视频”硬件加速“,并通过Kodi相关配置文件优化对于不同硬件需求的视频文件的支持。
3、搜索引擎真的是提高问题解决效率的好帮手。关键时,搜索引擎确实可以起到“事半功倍”的效果,但前提是合理、有效地使用搜索关键词。