私は 98% 完成したアプリを持っていますが、ごく最近、新たに導入されたバグに遭遇しました。アプリは、プレイリストからのサーバーから mp3 を再生します (m3u ファイルではなく、トラック URL の JSON リストのみ)。
トラックの再生が終了したときを除いて、すべてが期待どおりに機能しています。その瞬間、次のトラックが自動的に選択され、UI が更新されます。しかし、トラックは決して再生されません。また、playbackLikelyToKeepUp
キー値オブザーバーはトリガーされません。duration
その選択された (再生されていない) AVPlayerItem の ... を読み取ることができます。したがって、これは有効なオブジェクトです。
「次へ」を押すか、テーブルビューで行を選択すると、すべてが機能します。私にとって最も奇妙な部分は、ユーザーイベント (「次へ」を押す) と自動再生機能のコードがまったく同じであることです。どちらもcurrentTrackIndex
PlaylistManager に設定されており、変更を観察しています。playCurrentTrack
これにより、メソッドがトリガーされます。
何か関係がある可能性はありNSNotificationCenter
ますか?
これを使用して、現在のトラックの再生が終了したかどうかを確認します。次のようにします。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:self.currentAudioPlayerItem];
playerItemDidReachEnd
次のようになります。
- (void)playerItemDidReachEnd:(NSNotification *)notification {
// same action as pressing 'next' button in my audioplayer UI controls
// which is working, I can also see some UI updates ( correct title etc. … )
[self pressedNext];
}
URLからmp3をロードするときにトリガーされるイベントをブロックして、おそらくスレッドで何かを考えていますか?http トラフィック ツールに mp3 情報が読み込まれているのがわかります。
ありがとう。