问题标签 [avassetdownloadtask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
95 浏览

avfoundation - 删除 AVAssetDownloadTask 所有未下载的文件

我需要删除AVAssetDownloadTask应用程序运行时无法下载的所有文件。我想在应用程序收到UIApplication.willTerminateNotification.

我试过 cancel of all AVAssetDownloadTasks,但AVAssetDownloadDelegate urlSession(_ session: URLSession, assetDownloadTask: AVAssetDownloadTask, didFinishDownloadingTo location: URL)目前没有被调用。我想获取所有文件的位置 url。

如果还有其他方法可以做到这一点?

0 投票
0 回答
27 浏览

objective-c - 下载视频目标 c 时如何使用 AVAssetDownloadTask 获取 i-Frame

我正在使用 Objective C 开发 iOS 应用程序,我们在其中下载了视频。当我在离线视频中播放此视频时播放正常,但在离线播放模式下,快进和快退不适用于下载的内容。请建议我该怎么做。

0 投票
0 回答
82 浏览

ios - AVAggregateAssetDownloadTask 在进入后台时停止发送更新(可能停止下载)

首先,我使用的是 iOS 13.6.1

我正在下载 HLS 视频以供以后离线播放。在前台时,一切都按预期工作,所有逻辑都在做它应该做的事情,似乎没有任何问题。
但是当应用程序进入后台时,我停止获取 AVAggregateAssetDownloadTask 的更新(我的意思是,我没有看到在 Xcode 控制台中打印的委托回调中的日志)。

我遵循了文档

  • NSURLSessionConfiguration sessionSendsLaunchEvents 设置为 true
  • AppDelegate 实现了 handleEventsForBackgroundURLSession
  • Session 委托实现 URLSessionDidFinishEventsForBackgroundURLSession

另外,我为获取启用了后台模式。

疯狂的是,如果我连接仪器网络监视器,我会得到所有的更新。而且我看到下载在后台继续进行。即使没有上述文档中提到的更改,我仍然看到下载在监视器打开的情况下继续在后台进行。
但似乎网络监视器以某种方式使应用程序保持活力,因为如果我不打开它,那么我将获得零更新。

需要明确的是,我什至没有考虑在后台开始或完成下载,以及唤醒应用程序或其他任何事情。我只想开始下载,转到后台并让下载继续下载内容并通知我(AFAIK 是在单独的过程中完成的,我可以从网络监视器确认它是)。

一个例子:

  • 打开应用程序
  • 开始下载
  • 去后台
  • 没有显示更新
  • 打开仪器网络监视器并连接到设备中运行的应用程序
  • 突然开始获取更新

我的想法不多了。除了框架中的错误之外,没有任何意义。
无论看起来多么简单,任何想法都将不胜感激。
提前致谢!

PS:当进入设置>存储时,我有时会看到文件大小在后台增加,这意味着即使我没有看到来自委托回调的更新,下载仍在继续。在某些时候,我看到文件大小在后台一段时间内没有变化,但这可能是无关紧要的事情(我希望如此)。

0 投票
1 回答
97 浏览

ios - 离线 FairPlay 播放使网络请求加载 m3u8 播放列表

我们正在使用 AVAssetDownloadTask API 集在我们的应用程序中构建离线 Fairplay 播放功能。我们可以成功下载内容,但我们注意到网络活动,即在播放下载内容时对 movpkg 包中 boot.xml 中的 m3u8 播放列表的请求。

问题是加载那些 m3u8 播放列表需要 cookie 并且 cookie 设置为 1 天后过期,这会导致 cookie 过期时播放失败。我的问题是为什么播放下载的内容需要加载这些播放列表?难道不应该在没有网络的情况下播放下载的内容吗?

谢谢。

0 投票
1 回答
780 浏览

swift - AVAggregateAssetDownloadTask 错误域=CoreMediaErrorDomain 代码=-16657

我正在使用AVAggregateAssetDownloadTask在我的应用程序中下载HLS视频。我刚刚添加了暂停/恢复功能。简单地说,当用户想要暂停下载时,我会暂停任务。

但是,在这种情况下,实际上任务不会停止。它不断下载资产。当我按下恢复按钮时,我正在调用任务的 .resume() 方法。不知何故,这个过程非常快,直到%100,它给出了一个错误(继续阅读或转到错误消息标题)。

我该如何测试

  • 开始通过 AVAggregateAssetDownloadTask 下载项目
  • 在 %3 处点击暂停。
  • 调用任务?.suspend()
  • 等待 1 分钟或 2 分钟
  • 点击恢复下载按钮
  • 调用任务?.resume()
  • 任务从 %29 恢复
  • 任务在 %48 失败

代码

其他案例

  • 在不暂停任务的情况下,它可以完美下载。

技术细节

  • Xcode 版本 12.4 (12D4e)
  • iOS 版本 14.4

错误信息

错误域=CoreMediaErrorDomain 代码=-16657

"(null)" UserInfo={_NSURLErrorRelatedURLSessionTaskErrorKey=( "BackgroundAVAssetDownloadTask .<1>"), _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundAVAssetDownloadTask .<1>}

developer.apple.com

developer.apple.com 上也有同样的问题:

https://developer.apple.com/forums/thread/674090

报告的错误

FB9043262

如果您认为自己面临同样的问题,请考虑帮助。

最好的。

0 投票
1 回答
52 浏览

ios - iOS - 使用 AVAssetDownloadURLSession 设置下载的总最大大小限制

我正在创建一个应用程序来使用 AVAssetDownloadURLSession 和 AVAssetDownloadTask 下载音轨和视频。我想做的是为下载设置一个阈值。

比如说,阈值是 5GB,那么总下载量永远不会超过 5GB。

我浏览了 WWDC 视频并说 API 文档,但找不到任何可以让我设置一定限制的内容。

如果你们中的任何一个天才能够指出我是否可以使用 Apple API 实现上述场景,那就太好了,否则我将不得不编写自己的实现。