gpt4 book ai didi

ios - 如何重新初始化 AVPlayerItem?

转载 作者:行者123 更新时间:2023-11-29 01:39:13 27 4
gpt4 key购买 nike

我正在使用“initWithUrl:”方法初始化 AVPlayerItem。

问题是当初始化中断时(例如连接丢失)

假设我们有以下内容:

self.avPlayerItem = [[AVPlayerItem alloc] initWithUrl:url];

1.应该做什么?同时丢失连接时 avPlayerItem 的实例会发生什么情况?是否有一些协议(protocol)要实现以确定初始化是否成功?

2。我注意到的是,一旦初始化被中断,那么 avPlayerItem 的下一个“成功”初始化根本没有轨道(当之前没有完成中断时它们就会出现)要再次从源用户使用轨道初始化 avPlayerItem,需要关闭并再次打开应用程序。

最佳答案

在处理依赖于互联网连接的代码时,您必须确保在出现问题时有故障保护机制启动,因为在某些时候它会出现问题。

What should be done?

1) 在后台线程上执行所有依赖互联网连接的代码。您不想阻塞 UI。

2) 如果可能,请在使用前验证下载的文件。

有不同的方法可以解决这个问题,但我想我会使用 NSURLConnection 或类似的 API 将文件下载到临时文件夹中。在后台线程上。

下载后,我会使用临时 URL 初始化一个 AVAssetAVAsset 有一些很好的属性,比如 playable 可以帮助你检查文件是否下载成功。 (NSURLConnectionDelegate 还有一个方法可以通知下载是否有错误。)

如果你已经做到了这一点,那么你可以用你的 AVAsset 创建一个 AVPlayerItem 然后就可以了。如果您不保留下载的内容,请记住在某个时候删除临时文件夹的内容。

请记住,您想在主线程上播放文件,但所有其他加载和检查可能最好在后台线程上完成;你肯定想从后台线程使用 NSURLConnection

关于ios - 如何重新初始化 AVPlayerItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com