更新(2022/01/26)
ExoPlayer でも RTSP がサポートされてるようになったり状況は変化しているようです。
こちらの記事の情報は古くなってきているので、参考までにご覧ください。
はじめに
Androidでメディアを再生するにはMediaPlayerとExoPlayerを使った2種類の方法がある。
この2種類の特徴についてまとめて、どのような違いあるのか比較します。
MediaPlayerとは?
Android 1.0(API Level 1)の頃からあるライブラリです。
Androidに保存されている動画・音声、またはRAWリソースファイルの再生ができる。
ExoPlayerとは?
Googleが提供しているメディア再生用のOSSライブラリです。
Androidに保存されている動画・音声、またはRAWリソースファイルの再生できるだけでなく、
メディア配信(DASH・HLS・SmoothStreaming)・プレイリスト再生・字幕表示などもサポートしている。
何が違うのか?
MediaPlayerとExoPlayerでは機能的なところや技術的なところにも違いがある。
今回はそのなかでも機能的な面についてまとめます。
サポートするデバイス
MediaPlayerとExoPlayerではサポートするデバイスが異なる。
特にExoPlayerでは利用する機能ごとにサポートデバイスが変わるようなので注意が必要。
名称 | Android Minium Version | API Minimum Level | 参考資料 |
---|---|---|---|
MediaPlayer | 1.0 | 1 | - |
ExoPlayer | 4.1 | 16 | 詳細はこちらに書いてる |
サポートする機能
メディア再生にはあまり違いがありませんが、ストリーミング配信に関しては大きく違いがある。
またプレイリスト機能などExoPlayerにしかないものがある。
名称 | 機能 | 参考資料 |
---|---|---|
MediaPlayer | ・音声・映像再生(AAC・MP3・FLAC・MP4・WebM) ・ストリーミング再生(RTSP・HTTP Progressive Streaming) ・画像表示(BMP・GIF・JPEG・PNG) ・DRMコンテンツ再生 |
・MediaPlayer overview ・Supported media formats |
ExoPlayer | ・音声・映像再生(AAC・MP3・FLAC・MP4・WebM) ・ストリーミング再生(DASH・HLS・SmoothStreaming) ・DRMコンテンツ再生 ・プレイリスト再生 ・UIコンポーネント |
・Pros and cons - ExoPlayer ・Supported media formats - ExoPlayer |
ストリーミング配信
MediaPlayerはレガシーな配信プロトコルであるRTSPを再生でき、
ExoPlayerはモダンな配信プロトコルであるDASH・HLSを再生できるようになっている。
RTSPでしか通信できないものに対してはMediaPlayerが使うしかなさそう。
プレイリスト再生
ExoPlayerはプレイリスト再生に対応している。
このプレイリスト再生は次の映像をプリバッファリングしてくれるので、
映像を途切れさせることなく再生できるみたい。
MediaPlayerで再生すると
例えばMediaPlayerで映像を切り替えると
切り替え時にバッファリングが発生してしまうので映像が途切れる。
ExoPlayerで再生すると
しかしExoPlayerで再生すると次の動画を切り替える前に
バッファリングしてくれるので映像を途切れさせないで再生できる。
まとめ
- メディア再生の機能については特に違いはないので、
MediaPlayer、ExoPlayerのどちらを使っても問題ない - ストリーム配信については使える配信プロトコルが大きく違うので、
配信プロトコルにあわせてMediaPlayerかExoPlayerを使うか決める必要がある。 - ExoPlayerにはプレイリストを使った再生ができるので、
複数のメディアを操作したり切り替える場合はExoPlayerを使ったほうが便利そう。