- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我遇到了一个奇怪的问题,希望有人能提供帮助。
在我的 iOS 应用程序中,我使用 MutableComposition
通过组合用户照片库中的视频和应用程序包中的音频文件来创建带有自定义音轨的视频。然后我使用 AVPlayer
和 AVPlayerItem
使用我制作的自定义视频播放器向用户播放视频。
每次创建一个新的合成时, Assets 、播放器和合成都会被清除、释放,它基本上从一个干净的初始状态开始。
一切正常,直到以这种方式成功创建了 4 个视频之后,所有其他创建播放器的尝试都失败并显示错误 无法解码
。不管我正在重新创建的是同一个视频,与视频或音频文件的大小/长度无关,它总是在第五次尝试时完全失败,就像发条一样。一旦失败,就永远失败!
这就奇怪了,刚才同一个视频解码四次都没有问题,怎么突然就失败了?所以,如果有人有线索,请告诉我。
最佳答案
好的,各位,我直接从 Apple 那里得到了答案。我使用了我的一位开发人员 TSI 生命线来问这个问题,我将总结一下回答。
AVFoundation 允许的并发视频播放器数量有限制。这是由于 iOS 硬件的限制。当前设备的限制是 4 个玩家。如果您创建第 5 个播放器,您将收到“无法解码”错误。它不是对 AVPlayer 或 AVPlayerItem 实例数量的限制。相反,它是 AVPlayerItem 与创建“渲染管道”的 AVPlayer 的关联,并且您仅限于其中的 4 个。例如,这会导致一个新的渲染管道:
AVPlayer *player = [AVPlayer playerWithPlayerItem:somePlayerItem];
// assuming the AVPlayerItem is ready to go with an AVAsset that has been loaded
我还被警告过,您不能假设您将拥有 4 个可用的管道。另一个应用程序可能正在使用一个或多个。事实上,我已经在 iPad 上看到过这种情况,但不清楚是哪个应用程序在使用管道。
所以,你去吧,它完全没有记录,但这就是故事。
关于iphone - AVPlayerItem 失败并显示 AVStatusFailed 和错误代码 "Cannot Decode",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608570/
我对 AVPlayer.timeControlStatus 属性进行 KVO 处理,播放器有一个 AVPlayerItem。 该视频是托管在远程服务器上的 mpeg4 编码的 10 秒视频文件: le
我有一个崩溃影响了我大约 10% 的用户,但我无法重现它,并且不知道发生这种情况的确切时间。 Crashlytics 报告说,大约一半的崩溃用户没有关注应用程序,即做背景音频或 AirPlay。该应用
我一直收到这个错误: 'An AVPlayerItem can occupy only one position in a player's queue at a time.' 我对玩家项目进行了 N
我正在使用 AVPlayer 播放流式网络音频。我观察流项目的状态如下: ios avplayer trigger streaming is out of buffer 工作看起来不错,但我遇到了一个
这段代码在iOS 12上崩溃,并带有无法识别的选择器异常: [AVPlayerItem externalMetadata]: unrecognized selector sent to instanc
我正在使用 AVQueuePlayer 在我们的应用程序中播放视频列表。我正在尝试缓存 AVQueuePlayer 播放的视频,这样就不必每次都下载视频。 因此,在视频播放完毕后,我尝试将 AVPla
我收到警报消息“无法解码。此媒体所需的解码器正忙。”当尝试在应用程序中第五次播放视频文件时。搜索后我发现AVPlayerItem fails with AVStatusFailed and error
我正在使用“initWithUrl:”方法初始化 AVPlayerItem。 问题是当初始化中断时(例如连接丢失) 假设我们有以下内容: self.avPlayerItem = [[AVPlayerI
刚刚发现一个很奇怪的问题, 从本地存储加载 mp3 文件时, avplayeritem一直处于未知状态,如果文件放在文件夹中则无法播放。 方式一: //AVAsset *asset = [[AVURL
我正在使用 AVPlayer,它通过 AVPlayerItem 连接到远程 URL。问题是我想立即播放来自 URL 的声音,不要让用户等待 AVPlayer 缓冲。 问题在于,如果远程 URL 的 A
我知道当使用 AVQueuePlayer 播放 AVPlayerItem 对象列表时,播放器会预加载队列中的下一个项目,以便在用户到达该项目时更快地重新加载。 问题是我需要对预加载哪些项目有更多的控制
我看过many questions对此,没有人有解决方案。我得到: An AVPlayerItem can occupy only one position in a player's queue a
尝试从我的临时目录播放视频时出现此错误: NSString *tmpDir = [NSTemporaryDirectory() stringByAppendingString:@"/"]; NSStr
如果我使用 KVO 来观察我的播放器项目,如下所示: AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
我正在使用 AVPlayer 播放 AVMutableVideoComposition 并且从 IOS8 开始一切都很好。 但是现在视频开始播放,在 4 或 5 秒后停止,比如缓冲或类似的东西,声音继
我目前正在使用 AVPlayerItem 从 URL 播放实时流。我的代码是 - (void)viewDidLoad { AVPlayerItem* playerItem = [AVPlaye
我在我的应用程序中使用 AVQueuePlayer,我需要一个数组,其中包含类型为 [AVPlayerItem] 的轨道。每次 TableView 加载时都必须创建数组。我还有一个包含当前文件夹中元素
我有一个缓存类,它将 MP3 文件下载到某个缓存文件夹并将其命名为 xxxx.cache 我有一个加载 MP3 文件的 AVQueuePlayer。从我的 NSBundle Resources 文件夹
我有一个使用 AVQueuePlayer 对象的简单音频播放列表。通过迭代包含自定义 UITableViewCell 对象 PlayableAudioCell 的 UITableView 来填充队列。
我正在开发一个播放音频文件或流媒体的应用程序,遇到了一个我无法解决的问题。基本上我的 AVPlayer 在当前项目发生故障后不再播放新项目。下面是一个快速应用程序,您可以复制/粘贴以进行复制。 imp
我是一名优秀的程序员,十分优秀!