2

AVPlayer を使用してカスタム ビデオ プレーヤーに取り組んでいます。キャッシュ フォルダー (NSCache) のローカル ファイル システムに保存されているビデオを読み込みます。次のようにプレーヤーを初期化します。

self.playerItem = [[AVPlayerItem alloc] initWithURL:self.localURL];
[self.playerItem addObserver:self forKeyPath:NSStringFromSelector(@selector(status)) options:NSKeyValueObservingOptionInitial context:nil];
self.avPlayer = [[AVPlayer alloc]initWithPlayerItem:self.playerItem];
[self.avPlayer addObserver:self forKeyPath:NSStringFromSelector(@selector(status)) options:NSKeyValueObservingOptionInitial context:nil];

これは通常、正常に機能します。ただし、次のエラーで AVPlayerItem のステータスに頻繁に失敗します。

NSLocalizedDescription = "The operation could not be completed";
NSLocalizedFailureReason = "An unknown error occurred (-12983)";
NSUnderlyingError = "Error Domain=NSOSStatusErrorDomain Code=-12983

奇妙なことに、失敗した同じ URL が、失敗した直後とその直前に機能することがあります。10回ごとにロード試行が失敗すると思います。何が原因なのか、どこで答えを探すべきなのかわかりません。エラーコードを検索すると、空になりました。ヘルプやポインタは大歓迎です。

4

1 に答える 1

3

長い捜索の後、問題の原因を突き止めることができました。問題は、同時に存在できる AVPlayer アイテムの数に関する文書化されていない制限でした。インスタンスの数が多すぎると、動画を読み込めなくなり、AVPlayerItem エラー -12983 で失敗します。

他の人も同じ問題に遭遇したようです: AVPlayer インスタンスが作成されすぎたときに AVPlayerItemStatusFailed エラーが発生しました。プレイヤー インスタンスを再利用し、同時にアクティブなインスタンスが多すぎないようにすることで、この問題を解決しました。

于 2016-01-07T07:18:21.310 に答える