AVPlayerのドキュメント には次のように記載されています。
[the]プレーヤーは、ローカルおよびリモートのメディアファイルで同等に機能します
ただし、 AVAudioPlayerのドキュメント には次のように記載されています。
ネットワークストリームからキャプチャされたオーディオを再生しているのでない限り、オーディオの再生にはこのクラスを使用することをお勧めします。
私が行っている作業には、AVAudioPlayerの機能の一部が必要ですが、すべてのオーディオがストリーミングされています。 AVPlayerにないAVAudioPlayerから私が必要とする主なものは、 "playing"プロパティです。特にそのプロパティなしでプレーヤーのUIを構築することは困難です。
では、AVPlayerとAVAudioPlayerの違いは何ですか?AVPlayerはネットワークストリーミングに適していません。 「playing」プロパティなど、AVAudioPlayerが提供するAVPlayerからいくつかの情報を取得する方法はありますか?
AVPlayerは、AVURLAssetとiPodライブラリのURLを使用して、AVPlayerItemから再生できます。 AVAudioPlayerは、iPodライブラリのURLからは再生できません。
AVPlayerにはボリュームプロパティがなく、ハードウェアスイッチまたはMPVolumeViewでのみ制御できるシステムボリューム設定を使用する必要があります。ただし、AVAudioPlayerのミックスボリュームを設定できます。
AVPlayerは、シーク後に誤ったcurrentTimeを報告するようです。しかし、AVAudioPlayerは正確にレポートします。
7年後...
SwiftおよびCocoaPodsに依存する観点から、私の答えはiOS 8 +のみを比較することです)。
同じサポート:
AVAudioPlayer
の混合ボリュームを直接設定できます。AVPlayer
のAVAudioMix
を使用してAVPlayerItem
の混合ボリュームを設定できますaVPlayerとAVAudioPlayerの両方が、シーク後に誤ったcurrentTimeを報告するようです。
stop()
AVAudioPlayer
することをお勧めしますAVURLAssetPreferPreciseDurationAndTimingKey
を渡すことをお勧めします。 オブザーバーブロックによって指定された値に依存 。AVPlayer
が1つだけ必要ですAVAudioPlayer
が必要ですAVPlayerは実際にはAVAudioPlayerのplayingプロパティと同様のプロパティを持っています。 rate
プロパティを見てください。