HLSCachingReverseProxyServer
用于HLS分段缓存的简单本地反向代理服务器。
概念
- 用户设置反向代理URL而不是原始URL。
- https://example.com/vod.m3u8 + http://127.0.0.1:8080/vod.m3u8?__hls_origin_url=https://example.com/vod.m3u8
- AVAsset请求本地反向代理服务器的播放列表(
.m3u8
)。 - 反向代理服务器获取原始播放列表,并将所有URI替换为指向本地反向代理服务器。
#EXTM3U #EXTINF:12.000, - vod_00001.ts + http://127.0.0.1:8080/vod.m3u8?__hls_origin_url=https://example.com/vod_00001.ts #EXTINF:12.000, - vod_00002.ts + http://127.0.0.1:8080/vod.m3u8?__hls_origin_url=https://example.com/vod_00002.ts #EXTINF:12.000, - vod_00003.ts + http://127.0.0.1:8080/vod.m3u8?__hls_origin_url=https://example.com/vod_00003.ts
- AVAsset请求分段(
.ts
)到本地服务器。 - 反向代理服务器获取原始分段并缓存。下一次服务器将返回同一分段的缓存数据。
使用
let server = HLSCachingReverseProxyServer()
server.start(port: 8080)
let playlistURL = URL(string: "http://devstreaming.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/0640/0640.m3u8")!
let url = server.reverseProxyURL(from: playlistURL)!
let playerItem = AVPlayerItem(url: url)
self.player.replaceCurrentItem(with: playerItem)
依赖项
安装
Podfile
pod 'HLSCachingReverseProxyServer'
开发
$ make project
$ open HLSCachingReverseProxyServer.xcworkspace
许可协议
HLSCachingReverseProxyServer受MIT许可约束。更多信息请参阅许可文件。