Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

m3u8文件到m3u8文件到ts文件缓存有问题 #173

Open
ClayGuitar opened this issue Mar 23, 2024 · 2 comments
Open

m3u8文件到m3u8文件到ts文件缓存有问题 #173

ClayGuitar opened this issue Mar 23, 2024 · 2 comments

Comments

@ClayGuitar
Copy link

ClayGuitar commented Mar 23, 2024

使用情况
视频m3u8格式下,访问第一个m3u8链接得到新的m3u8文件然后再播放对应ts文件
如服务器返回https://www.xxxxx.com/xxxxxx.m3u8后访问得到新的文件如下

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3000000,CODECS="mp4a.40.2,avc1.640032",RESOLUTION=1080x1920
video/144c80b2c5934acc9dd5c273b0849505-65b2e042f69eef1a803d747d6e12f34b-video-hd.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=900000,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=540x960
video/144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld.m3u8

然后再根据对应网速自动选择播放低清高清视频得到如下ts文件

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00001.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00002.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00003.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00004.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00005.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00006.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00007.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00008.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00009.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00010.ts
#EXTINF:3.000000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00011.ts
#EXTINF:2.360000,
144c80b2c5934acc9dd5c273b0849505-110a0540099f199acda85d6b5a5e6f1d-video-ld-00012.ts
#EXT-X-ENDLIST

如配合AVPlayer使用 调用proxyURLWithOriginalURL 该方法,访问服务器最开始返回m3u8缓存没有问题,但第二个m3u8以及后续ts文件缓存的url 在执行KTVHCHTTPConnection类中67行的代码URLString = URLString.stringByDeletingLastPathComponent;https://前缀会变为https:/前缀,少了一个反斜杠/,导致自己通过completeFilePathWithURL或KTVHCDataLoader这个类提前下载的文件缓存没有用到。

@ClayGuitar
Copy link
Author

应该是用错方法了
Apple Document: Note that this method only works with the file paths (not, for example, the string representations of URLs).
Apple文档:请注意,此方法仅适用于文件路径(而不是URL的字符串表示)。

But you string is clearly a full URL address, does not belong to the file path, so we will assemble them into a URL, using URL classification URLByDeletingLastPathComponent to intercept
但是你的字符串显然是一个完整的URL地址,不属于文件路径,所以我们将它们组装成一个URL,使用URL分类URLByDeletingLastPathComponent来拦截

@ClayGuitar
Copy link
Author

另外还有个问题,就是利用 KTVHCDataLoader 下载ts文件之后虽然缓存在了本地,但是依然用不到本地文件,看代码是因为读这个KTVHCDataUnit的对象时需要判断totalLeng以及completeURL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant