web-dev-qa-db-ja.com

AVPlayerとAVAudioPlayer

AVPlayerのドキュメント には次のように記載されています。

[the]プレーヤーは、ローカルおよびリモートのメディアファイルで同等に機能します

ただし、 AVAudioPlayerのドキュメント には次のように記載されています。

ネットワークストリームからキャプチャされたオーディオを再生しているのでない限り、オーディオの再生にはこのクラスを使用することをお勧めします。

私が行っている作業には、AVAudioPlayerの機能の一部が必要ですが、すべてのオーディオがストリーミングされています。 AVPlayerにないAVAudioPlayerから私が必要とする主なものは、 "playing"プロパティです。特にそのプロパティなしでプレーヤーのUIを構築することは困難です。

では、AVPlayerとAVAudioPlayerの違いは何ですか?AVPlayerはネットワークストリーミングに適していません。 「playing」プロパティなど、AVAudioPlayerが提供するAVPlayerからいくつかの情報を取得する方法はありますか?

47
macinjosh
  1. AVPlayerは、AVURLAssetとiPodライブラリのURLを使用して、AVPlayerItemから再生できます。 AVAudioPlayerは、iPodライブラリのURLからは再生できません。

  2. AVPlayerにはボリュームプロパティがなく、ハードウェアスイッチまたはMPVolumeViewでのみ制御できるシステムボリューム設定を使用する必要があります。ただし、AVAudioPlayerのミックスボリュームを設定できます。

  3. AVPlayerは、シーク後に誤ったcurrentTimeを報告するようです。しかし、AVAudioPlayerは正確にレポートします。

37
CJ Hanson

7年後...

SwiftおよびCocoaPodsに依存する観点から、私の答えはiOS 8 +のみを比較することです)。

1. iPodライブラリのサポート

iOS6以降の同一サポート

2.音量調節

同じサポート:

3.コントロールを求める

aVPlayerとAVAudioPlayerの両方が、シーク後に誤ったcurrentTimeを報告するようです。

4.ソースの変更

  • 複数のファイルを再生するには、AVPlayerが1つだけ必要です
  • 複数のファイルを再生するには、複数のAVAudioPlayerが必要です
20
Cœur

AVPlayerは実際にはAVAudioPlayerのplayingプロパティと同様のプロパティを持っています。 rateプロパティを見てください。

7
tadejsv