欢迎光临散文网 会员登陆 & 注册

[已解决]ijkplayer无法播放b站视频

2023-06-06 11:26 作者:RobinNotBad  | 我要投稿

在改进小电视播放器(一个开源的手表端视频播放器,用java编写)的过程中,由于在部分手表上的兼容性问题,我想要将原本的MediaPlayer换为ijkplayer内核,问题就此出现。

症状简述:下载视频再播放无问题。在线播放就会403拒绝访问,播放器输出错误码"-10000,0",后经测试只有b站视频不能播放

(toast提示我加的)

(将链接直接用电脑浏览器打开,可以正常播放) 起初我以为是因为随便找个app拆包取库,人家没编译openssl导致不支持https,于是我耗费一坤周的时间自己学习编译带上了openssl,然而还是不行。 我开始怀疑是不是自己编译出问题,于是找了原神官网一个背景视频,https的,结果能播......更炸裂的是我换上之前拆别人包拆出来的库,一样能用(现在想想,正常网站哪个不是https......)好嘛,合着我半个月白干了,早知道先测试了TAT

总之现在我知道了,不是ijk问题。 然后我就蒙蔽了,我对网络通信这方面差不多一无所知,于是我去问WearBili的作者XC。XC告诉我可能是我获取链接时没加"platform=html5",然而原作者早就加了。然后他让我加headers试试看,仍然不行。所以系统自带的MediaPlayer为啥能播?我不理解。

(这是请求链接的部分) 这时候正好原作者找我要这个修改版小电视最新版的代码,于是我把这个大坑扔给了原作者看。 原作者倒是告诉我一个可能的问题原因:由于b站视频链接太长,ijk接收到视频地址后,咔嚓把".mp4"后面的参数啥的全给截了。我想了想确实有道理,我试过把mp4后面一长串删掉再用浏览器打开,也是报403。 然而我抓包之后发现链接是完整的(不过我也看不出什么门道)

于是我们都没辙了。

最终,我发现了请求里面有两个UserAgent,一查才知道,ijkplayer自带了一个UserAgent,将其用setOption改掉,即可正常播放!

[已解决]ijkplayer无法播放b站视频的评论 (共 条)

分享到微博请遵守国家法律