我命途多舛的媒体播放器

回想一下,用OneDrive网盘用来当做媒体播放器是很久以前的事儿了。国内的网盘越来越大,速度也有保证,所以放弃了OneDrive,投靠了天翼云的怀抱。
可能是注册的天翼云比较早吧,10T的空间比OneDrive的5T大了一倍。

CTList

偶然发现了CTList,记得是去年的事情吧,当时也没有别的解决方案,于是采用了CTList
于是按照说明安装了程序。
然后,发现了一些没有解决的问题:

  • 没有办法解析Markdown文件,比如README.md
  • 视频可以播放,但是有很多问题,比如解码能力有限、无法外挂字幕等;

于是为了解决这两个问题,找到了替代的解决方案。

Markdown解析

采用现有的JS包Marked在前端解析README.md,只要把README.md文件的路径用GET方法得到内容,就直接用marked(data)来渲染就可以了。
有个小问题,就是页面打开后,JS是异步获取文件内容的,所以有1-2秒(取决于网络质量)的延迟,才能显示README.md文件的内容。
不过不太影响使用。

第三方媒体播放器

既然网页播放器有诸多问题,那就调取第三方视频播放器MXPlayer来播放视频。
做了很多搜索工作,最终确定了在手机端(安卓)用MXPlayer来播放视频。
只要在手机上安装了MXPlayer,就可以在网页中,用类似下面的intent方法来拉起MXPlayer,并且把视频的URL和名字传送过去:

1
2
3
4
5
mxintent = 'intent:' + url + '#Intent;package=com.mxtech.videoplayer.ad;type=' + type + ';S.title=' + name + ';end';

//url是视频网址
//type是固定值video/*
//name是播放时显示的视频的名称

直接跳转到上面的地址,就可以拉起MXPlayer并播放视频。

关于type参数,最开始是没有的。没有type参数导致的问题是,如果视频网址中有多个点.(可能是不能超过20个),就会导致MXPlayer无法播放视频,会跳转到MXPlayer在Google Play(谷歌商店)的软件下载页面。
在问了官方之后,官方建议使用type参数来解决这个问题。

需要注意的是,video/*不要直接写在JS代码中,可能是因为/*连在一起,在JS中是注释标记,此标记后面的JS代码就都会被当做注释不再执行。

于是这个CTList解决方案使用了一年左右,没有什么大的问题。

PanIndex

前几天刚刚接触了PanIndex,作者不只是适配了天翼云,包括阿里云盘、OneDrive等都完成了适配。
简单的说说使用了这几天的问题。

  • PanIndex拉取文件的时候,是按照最后修改时间降序排列的,导致的问题就是无法按照文件名显示文件; (2.0.5版本已经可以在前端完成排序)
  • 还是只有网页播放器,需要解决其播放能力的问题;
  • 拉取文件可能有问题,偶尔会出现重名,就是同一个文件显示两次。可能是BUG?偶尔会出现。 (这个是浏览器本地缓存的问题)

至于播放器问题,还是上面的办法,加一个按钮跳转过去就行了。

另外不想看到.ASS.SRT字幕文件,所以用点简单的办法在前端隐藏了。

两种解决方案都先用着,看看哪个先坚持不下去~

至于这两种方案的做出来的成品的网址,就不分享了,我怕到时候真的被天翼云给限速了。

写在最后

  • 天翼云用了7T空间了,剩下的空间都比阿里云的总空间大;
  • 可惜天翼云每天上传的文件大小有限制,不超过15G(开黄金会员不超过200G);
  • 阿里云盘今年才开始用,永久空间只有2T,跟百度云一个样;
  • 好像非电信宽带使用天翼云速度不理想?没怎么测试过。

最后更新日期2021.08.27