changsanjiang / SJMediaCacheServer

SJMediaCacheServer 是一个高效的 HTTP 媒体缓存框架,旨在代理媒体数据请求并优先提供缓存数据,从而减少网络流量并增强播放的流畅性。该框架支持两种类型的远程资源:基于文件的媒体,如 MP3、AAC、WAV、FLAC、OGG、MP4 和 MOV 等常见格式,以及 HLS(HTTP Live Streaming)流。它会自动解析 HLS 播放列表并代理各个媒体片段。
MIT License
245 stars 53 forks source link

部分m3u8地址视频播放失败 #25

Closed wangleihi closed 3 years ago

wangleihi commented 3 years ago

比如:http://t-course-video.meipian.me/course/m3u8/1616048303_WfVo.m3u8?pm3u8/0/deadline/1616058658&e=1616058658&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:E4hJNhhrS2C6SYiOWn1p8sY9-qY=

changsanjiang commented 3 years ago

@Layney 这个token过期了, 再来个链接吧

wangleihi commented 3 years ago

@Layney 这个token过期了, 再来个链接吧

http://t-course-video.meipian.me/course/m3u8/1616048303_WfVo.m3u8?pm3u8/0/deadline/1616062583&e=1616062583&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:FZzx2xB8Dyv7h24KOYEu3kD4Lco=

报错内容是 MCSProxyTask: <0x281b699b0>.prepare; MCSProxyTask: <0x281b699b0>.error { error: Error Domain=lib.changsanjiang.SJMediaCacheServer.error Code=100000 "(null)" UserInfo={object=<NSMutableURLRequest: 0x28164f530> { URL: http://t-course-video.meipian.me//93TFIiekHPD1WxnfGO4K-H6jLFA=/ljyi2JnOTxeQqR5p7NLmmGqbva2b/000014.ts?e=1616062583&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:FDBpgNn_8AmM0c6Cjy8exZoShEE }, reason=解析器为空, 索引文件可能未解析!} };

changsanjiang commented 3 years ago

这里改一下: https://github.com/changsanjiang/SJMediaCacheServer/commit/d7edaeaefe97cb5333e619b0784fa4589d0e19c2

changsanjiang commented 3 years ago
  1. 这种带token,参数不固定的url 需要配置一下这个block,保证引用相同的缓存文件
    SJMediaCacheServer.shared.resolveAssetIdentifier = ^NSString * _Nonnull(NSURL * _Nonnull URL) {
        return [URL.absoluteString stringByDeletingPathExtension];
    };
  1. token过期也会导致请求失败。 配置请求用这个block:
    SJMediaCacheServer.shared.requestHandler = ^NSMutableURLRequest * _Nullable(NSMutableURLRequest * _Nonnull request) {
    //       配置token
    //        request setURL:...
        return request;
    };
wangleihi commented 3 years ago
  1. 这种带token,参数不固定的url 需要配置一下这个block,保证引用相同的缓存文件
    SJMediaCacheServer.shared.resolveAssetIdentifier = ^NSString * _Nonnull(NSURL * _Nonnull URL) {
        return [URL.absoluteString stringByDeletingPathExtension];
    };
  1. token过期也会导致请求失败。 配置请求用这个block:
    SJMediaCacheServer.shared.requestHandler = ^NSMutableURLRequest * _Nullable(NSMutableURLRequest * _Nonnull request) {
//       配置token
//        request setURL:...
        return request;
    };

好的 感谢大佬指点

wangleihi commented 3 years ago
  1. 这种带token,参数不固定的url 需要配置一下这个block,保证引用相同的缓存文件
    SJMediaCacheServer.shared.resolveAssetIdentifier = ^NSString * _Nonnull(NSURL * _Nonnull URL) {
        return [URL.absoluteString stringByDeletingPathExtension];
    };
  1. token过期也会导致请求失败。 配置请求用这个block:
    SJMediaCacheServer.shared.requestHandler = ^NSMutableURLRequest * _Nullable(NSMutableURLRequest * _Nonnull request) {
//       配置token
//        request setURL:...
        return request;
    };

https://zuikzy.603ee.com/2019/05/06/Et6dCHH62ojQBCqB/playlist.m3u8?pm3u8/0/deadline/1616122998&e=1616122998&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:cAZaDTeONN4hMlQHWcnldkWktGg=

wangleihi commented 3 years ago
  1. 这种带token,参数不固定的url 需要配置一下这个block,保证引用相同的缓存文件
    SJMediaCacheServer.shared.resolveAssetIdentifier = ^NSString * _Nonnull(NSURL * _Nonnull URL) {
        return [URL.absoluteString stringByDeletingPathExtension];
    };
  1. token过期也会导致请求失败。 配置请求用这个block:
    SJMediaCacheServer.shared.requestHandler = ^NSMutableURLRequest * _Nullable(NSMutableURLRequest * _Nonnull request) {
//       配置token
//        request setURL:...
        return request;
    };

https://zuikzy.603ee.com/2019/05/06/Et6dCHH62ojQBCqB/playlist.m3u8?pm3u8/0/deadline/1616122998&e=1616122998&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:cAZaDTeONN4hMlQHWcnldkWktGg= 这个地址又播放不了了 ?

changsanjiang commented 3 years ago

可以了

wangleihi commented 3 years ago

http://course-video.meipian.me/course/m3u8/1616725104_HY3n.m3u8?pm3u8/0/deadline/1616731262&e=1616731262&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:9u2Wa_SbW3ZeiPxJoztZ-3SkrUs= 这个链接为啥又解析不了 。。。

changsanjiang commented 3 years ago

这个URL比较奇特, 我测试一下

changsanjiang commented 3 years ago

这里改一下吧: https://github.com/changsanjiang/SJMediaCacheServer/commit/075e939888f574e62ea21fdb22d0ed481beb712b#

wangleihi commented 3 years ago

很奇怪 我们测试环境地址就是可以正常解析的 : http://t-course-video.meipian.me/course/m3u8/1616727566_R424.m3u8?pm3u8/0/deadline/1616733211&e=1616733211&token=o8tYTtFAc2_SNrlYQw8lTsYT9B5IUXNBItafEj4f:eLAFTUqODvDhvLDPKbt2RCPxTv4=