iOS8ではコードたった1行でオーディオプレーヤーが作れるらしい

 

こんにちは、おひろです。
今日はオーディオ関連のネタを一つ書きたいと思います。

iOS8のオーディオと言えばAVAudioEngineが新しく増えて、
これがホントにすごいわけですが、これをネタにするとキリがないので、
今日はライトに、これまたiOS8で追加されたAVPlayerViewController
について書こうと思います。(AVAudioEngineはまたの機会に)

これを使うとタイトルの通り、コード1行書くだけで音声を再生することができます。
(ちなみに音声のみの話のように書いてますが、動画もいけるはずです)
では、早速やってみましょう。

まず、適当にプロジェクトを作って、Storyboardを開き、
「AVKit Player View Controller」を引っ張ってきて
ルートコントローラーに設定します。

blog_20141017_1

次に新規でクラスを作ります。
今回はAVPlayerViewController自体をルートコントローラーにしているので、
AVPlayerViewControllerのサブクラスとして作ってください。
作ったら、Storyboard上でコントローラーにクラスの設定も
もちろん忘れないように行ってください。

最後に、viewDidLoadで以下の一行付け足します。
(Swiftでも同じ感じでいけると思います)

// ファイル名、拡張子などは必要に応じて変えてください。
self.player = [AVPlayer playerWithURL:[[NSBundle mainBundle] URLForResource:@"hogehoge" withExtension:@"wav"]];

以上です。立ち上げると以下のような画面がでます。

blog_20141017_3

再生ボタンを押せば再生されますし、シークもできます。
標準プレーヤーのようにシークする時に指をずらすと、シーク量を変える
機能もついてたりします。(音声が短すぎると出ません)

blog_20141017_4

つまり、再生するAVPlayerだけ渡してやれば、押されたボタンやコントロールに
応じてAVPlayerViewControllerが適切なAVPlayerのメソッドをたたいてくれるような
作りになっているようです。

ちなみに、AVPlayerの代わりにAVQueuePlayerをセットすると連続再生も
できますし、メディアピッカーで拾ってきたAVURLAssetからAVPlayerを生成すれば、
ミュージックライブラリに入っている曲を再生することもできます。
(ただアートワークなどは表示されませんでした。出す方法があるかもしれません。)

あと、こんな感じにコンテナビューと紐づければ、画面の好きなところに
プレーヤーを簡単に出せるのも便利です。
拡大ボタンを押せば全画面表示もしてくれます。

blog_20141017_2

↓実行したらこんな感じ

blog_20141017_5

AVPlayerViewControllerとその他のパーツを組み合わせれば
簡単にオリジナルのプレーヤーを作ることができそうですね!

ではでは。

Pocket