EXOPlayerライブストリーミング–実装と役立つヒント

公開: 2018-06-08

ライブストリーミングを利用して音楽やビデオを再生することは、Androidデバイスにとって重要なアクティビティです。 YouTubeは、ビデオコンテンツを共有するための最も強力なプラットフォームの1つです。 したがって、YouTubeチャンネルのチャンネル登録者を購入して、より多くの人とつながることができます。 その結果、ユーザーがそれを行うための多くの可能性が存在し、それらのほとんどはオープンソースです。 範囲が広いため、最適なものを選択するのが難しい場合があります。 それでも、プロジェクトに最高の設備を提供するための特定の方法があります。 この記事では、どのプレーヤーサービスを選択するか、そしてその理由について意見を共有します。 ネイティブMediaPlayerが最も人気のあるものの1つである、無制限のストリーミングの可能性の世界を紹介しましょう。 しかし、新しいフィールドプレーヤーも登場しました。 EXOPlayerライブストリーミングを備えたExoPlayerは、より幅広い機能を備えており、次のお気に入りになる準備ができています。

EXOPlayerライブストリーミングメイン画像

簡単な概要

2014年には、カスタムコントロールが動作するビデオプレーヤー用のGoogle ExoPlayerライブラリと、「exoライブストリーム」の実装は素晴らしいアイデアでした。 組み込みのネイティブMediaPlayerは、さまざまなデバイスでの安定した信頼性の高い動作などの重要な問題で一貫性がないことを証明しました。 その気まぐれさは、コードの重さと妥協のないパフォーマンスポリシーとともに、専門家の間で悪名高いものになりました。 それどころか、Androidの低レベルメディアAPIに基づいて構築された新しくリリースされたExoPlayerは、最高の音楽とビデオのストリーミングの可能性を保証しました。

そのリリースの最初のそして最も重要な理由は、もちろん、HTTP Live Streaming(HLS)の実装でした。これは、Appleによって開発されたメディア放送用のプロトコルです。 その中で、ビデオコンテンツは、リアルタイムで適応ビット転送速度でロードされたフラグメントで構成されています。 このようにして、ExoPlayerライブストリーミングは、ネイティブMediaPlayer APIの完全にカスタマイズ可能な代替手段となり、すべてのデバイス間でビデオとオーディオをストリーミングするための便利なAPIを提供します。 今では、BBCなどの有名人の名前を持つ何千ものアプリで使用されています。

代替案(およびそれらを選択すべきでない理由)

もちろん、ExoPlayerにはかなり成功している競合他社がたくさんあります。 それらには、次のようなよく知られたサービスが含まれます。

  • Vimeo

vimeoexoストリーミング画像

  • Vitamio;

vitamio exoplayerhls画像

  • LibVLC。

しかし、ExoPlayerはそれらのどれよりもはるかに優れていると今では確かに言うことができます。 チャンネル登録者数は非常に多いものの、コンテンツはサーバーにのみ保存され、WebViewでの再生用にiframeリンクが提供されているため、Vimeoには柔軟性がありません。 これにより、アプリケーションのパフォーマンスが大幅に低下します。 人気のFFmpegライブラリに基づいており、多くの便利な機能を備えているため、Vitamioは非常に人気がありました。 ただし、これは無料ではないサービスであるため、すぐに利用できる人は多くありません。 LibVLCは、NDKをサポートするプロジェクトのみを処理するため、機能がかなり制限されています。 そのため、ExoPlayerはこのタイプの今日最も人気のあるサービスです。

ポジティブとは何ですか?

他のサービスと同様に、ExoPlayerには長所と短所があります。 その主な長所は次のとおりです。

  • バグ処理などのすべての高度な機能を備えたexoplayerHLSの実装。
  • 簡単なスタート;
  • デバッグを成功させる可能性を可能にするJavaベース。
  • さまざまな形式。
  • Android4.4以降のWidevine共通暗号化の完全サポート。
  • 完全にカスタマイズ可能な制御コンポーネント。
  • ストリームでオーディオとビデオを再生する可能性。
  • 字幕サポート;
  • Google Cast SDKのサポート。これにより、テレビまたはサウンドシステムでの作業が可能になります。
  • MediaSourceの使用法。

後者では、exoplayer HLSストリームだけでなく、DASH(DashMediaSource)とSmoothStreaming(SsMediaSource)も構成できます。 また、サイドロードされた字幕などのEXOPlayerライブストリーミングコンポーネントや、ビデオシーケンスの再生も可能にします。 それが持つもう1つのエキサイティングな機能は、新しくリリースされたPlayerNotificationManagerです。これにより、ユーザーは再生通知を取得して、ビデオまたはオーディオのexoストリーミングを制御できます。 これらを使用すると、スムーズに転送、巻き戻し、次のトラックに進むことができます。HLSビデオストリーミング用のMediaSourceを作成するには、次のような簡単なアクションを実行する必要があります。


fun getHlsMediaSource(hls:String):MediaSource {
val bandbandMeter = DefaultBandwidthMeter()
val applicationName = Util.getUserAgent(context、APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory(context、applicationName、bandwidthMeter)
val factory = HlsMediaSource.Factory(dataSourceFactory)
factory.createMediaSource(Uri.parse(hls))を返します
}


さらに、EXOPlayerライブストリーミングライブラリには、MergingMediaSource、ConcatenatingMediaSource、TrackSelector、LooopingMediaSourceなど、他にもさまざまな素晴らしい機能があります。 それらはすべて、Exoストリーミングの可能性の複雑なシステムの完璧なパフォーマンスを保証します。 ExoPlayerには、基本的な機能のために、デフォルトでこれらのコンポーネントの範囲があります。 ただし、非標準のパフォーマンスのために多数のカスタマイズされた実装を利用することもできます。

全体として、exoライブストリームは、コンテンツのソースに関連するエラーの識別を伴うビデオのストリーミング、最新のフォーマットの大部分をサポートするビデオまたはオーディオプレーヤーのモバイルまたはTVアプリケーションへの追加など、すべての重要なタスクを処理します。短時間など

ネガティブとは何ですか?

もちろん、完璧なものはありません。 EXOPlayerのライブストリーミングは、その現代性と多くのエキサイティングな機能にもかかわらず、それも例外ではありません。 その主な欠点は次のとおりです。

  • 設計上の制限;
  • 16より前のAndroidバージョンのサポートの欠如。
  • 画面ロックの場合、プレーヤーのレクリエーションパフォーマンスが不可能。
  • 最後に表示した位置への逆巻きはありません。

後者の課題の実用的なソリューションは次のようになります。


fun onPause()をオーバーライドする{

スーパー.onPause()

releasePlayer()

}


プライベート楽しいreleasePlayer(){

ifsimpleExoPlayer != null ){

resumePosition = Math.max(0、 simpleExoPlayer !!。 contentPosition

shouldAutoPlay = simpleExoPlayer !!。 playWhenReady

simpleExoPlayer !!。release()

simpleExoPlayer = null

}

}


fun onResume()をオーバーライドする{

スーパー.onResume()

initPlayer()

}


プライベート楽しいinitPlayer(){

simpleExoPlayer = streamConfigurator .createExoPlayer()

simpleExoPlayerView。 useController = true

simpleExoPlayerView。 player = simpleExoPlayer

simpleExoPlayer ?.seekTo( resumePosition

}


ただし、これらの問題は、Androidアーキテクチャとそのハイパースレッディングの特性に起因する可能性があり、Android開発者はやや苦労する可能性があります。 それ以外は、ExoPlayerライブストリーミングは素晴らしい選択です。

EXOPlayerライブストリーミングのアルゴリズム

専門家はExoPlayerが本当に便利で使いやすいと主張しており、私たちはこの考えに完全に同意します。 それを使って作業を開始するには、いくつかの簡単な手順を実行する必要があります。 それらが含まれます:

  • ExoPlayerを依存関係フォームでプロジェクトに追加します。 これをアプリモジュールのファイルに追加すると、完全なExoPlayerライブストリーミングライブラリで確実に機能します。
  • SimpleExoPlayerインスタンスを作成します(そのためにExoPlayerFactoryを使用します)。
  • ビデオ出力と簡単なユーザー入力の両方のためのビューへのプレーヤーのアタッチメント。
  • 再生するプレーヤーのMediaSourceの準備。
  • プレーヤーのリリース(特別なコード付き)。

結論

ExoPlayerライブストリーミングは、他のライブラリで問題となる多くの問題を解決できるオープンソースの既製のソリューションです。 ご覧のとおり、その利点とプラスの機能のリストは、マイナスの機能の列挙よりもはるかに長くなっています。 おそらくその理由のために、それはAndroidアプリケーションの大部分で使用されており、Googleによって完全にサポートされています。 その主な選択肢と比較して、それははるかに柔軟でシンプルです。 私たちのチームは、そのエキサイティングな機能があなたに大きなマッシュをもたらす可能性があるので、それを使い始めることをお勧めします。