Dee*_*ora 6 ios nsurlsession nsurlsessionconfiguration nsurlsessiondownloadtask
我正在尝试下载 .m3u8 视频的 .ts 文件。我为每个 .ts url 创建了一个下载任务,并将会话配置 HTTPMaximumConnectionsPerHost 属性设置为 4:
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.HTTPMaximumConnectionsPerHost = 4;
_session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:[NSOperationQueue mainQueue]];
Run Code Online (Sandbox Code Playgroud)
预期行为:只能同时下载 4 个 ts,一旦其中任何一个下载完成,下一个下载项目将被放入队列中,以便在任何时候最多有 4 个 ts 正在下载。
实际行为:大约 50 个或更多 ts 正在同时下载,忽略 HTTPMaximumConnectionsPerHost 属性。
Charles 时间线的屏幕截图显示同时发生的多个 .ts 请求。
当我尝试使用 NSURLSession 下载图像时,将 HTTPMaximumConnectionsPerHost 指定为 3,我可以看到一次只进行 3 次下载。
要下载 m3u8,我还可以使用 AVAssetDownloadURLSession 而不是 NSURLSession,后者一次仅下载 1 个 .ts。
我想找出:
1) 为什么 HTTPMaximumConnectionsPerHost 属性对于图像下载可以正常工作,而对于 .ts 下载则不起作用,因为会同时发生超过 4 个 .ts 下载。
2)有没有办法使用AVAssetURLDownloadSession将最大并发.ts下载增加到4,它只下载1.ts
除非您发现 API 中的错误,否则这可能表明您正在多个会话和/或在您配置的会话之外的某个会话中发送 .ts 请求。会话不知道其他会话中的请求;最大值是每个会话。
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |