CarGuo / GSYVideoPlayer

视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,16k page size,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
https://juejin.cn/user/817692379985752/posts
Apache License 2.0
20.21k stars 4.19k forks source link

加密视频重定向之后无法正常播放 #4040

Closed SmallWinter closed 1 week ago

SmallWinter commented 1 week ago

问题描述:

加密的视频地址,譬如 https://jf.hanliu8.cn/api/?key=*******x&url=eW9BaTFMeGNtWkJHbmlDcDY4Y1BVcEw0bUpsMUc4NTNWc3V3Zms4MDBITFNBSUZQRklTd2JEV21WMkI1eDh4TGZUMDA9 (PS:KEY 不能泄露) 仿照demo例子重写HttpDataSourceFactory,在open中的makeConnection方法中,解密视频,然后走重定向逻辑后,拿到真实的播放地址后,视频无法播放,报错:None of the available extractors;但如果把重定向后真实的播放地址给播放器,是可以播放的。

出现问题的视频流

https://pan.38zf.cn/m3u8/alist/c2d29da42345011c1b716debbf9c3d96/playlist.m3u8

❗❗❗⚠️⚠️⚠️这个很重要!!!!没有问题流的问题无法处理复现⚠️⚠️⚠️❗❗❗

问题机型/系统:

例如 真机 realme Q2 Pro 5G Android12.0

GSY依赖版本

'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.3.4-release-jitpack' 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.3.4-release-jitpack' 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.3.4-release-jitpack'

Demo中的复现步骤

Demo中的detailPlayer页面打开后XXXX会出现这个问题。

问题代码:(如果有) image

image

问题log(如果有)

image

CarGuo commented 1 week ago

解密后的 url 匹配不上解码器吧,目前 exo 用的是后缀, 比如正常逻辑如果 url 没有后缀,可以通过 setOverrideExtension 去指定,然后匹配上,你也可以通过类似方式去指定,最终体现在 ExoSourceManager 里的不同 mediaSource

SmallWinter commented 1 week ago

解密后的 url 匹配不上解码器吧,目前 exo 用的是后缀, 比如正常逻辑如果 url 没有后缀,可以通过 setOverrideExtension 去指定,然后匹配上,你也可以通过类似方式去指定,最终体现在 ExoSourceManager 里的不同 mediaSource

是这个问题,已解决,谢谢