ExoPlayer実践ガイド ~Extensionライブラリ編~
- ダウンロード商品¥ 880
本書ではExoPlayerでどのようなExtensionライブラリが提供されているのか、また、それらを利用することによって何が実現できるのかについて解説しています。 また、サンプルアプリも公開しているため、実際のコードを確認しながら読みすすめることができます。 https://github.com/takusemba/exoplayer-practice-guide-sample エクステンション以外の基本機能に関しては、別書「ExoPlayer実践ガイド Coreライブラリ編」を販売しています。 https://takusemba.booth.pm/items/2076653
筆者プロフィール
神戸大学(電気電子工学科)を卒業後、2017年4月にCyberAgent株式会社に就職。AbemaTV.Incで、主に動画再生周りを担当し、Androidアプリ開発に従事する。
目次
【はじめに】 本書について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 動作環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 サンプルコード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 お問い合わせ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 免責事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 【第1章 IMAでの広告再生】 1.1 CSAI vs SSAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 IMA の基礎知識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 IMA で広告が流れるまで . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.1 広告 Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4 実装方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 広告 UI の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 【第2章 キャスト再生】 2.1 キャスト再生とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 Sender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.1 初期設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.2 Cast ボタン . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.3 Cast 再生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 【第3章 MediaSessionとの連携】 3.1 MediaSession とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 MediaSession エクステンション . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 基本的な使い方 . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 キュー再生に対応する . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.3 外部からの再生開始に対応する . . . . . . . . . . . . . . . . . . 26 3.3 Media2 エクステンション . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.1 基本的な使い方 . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.2 キュー再生に対応する . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.3 外部からの再生開始に対応する . . . . . . . . . . . . . . . . . . 33 【第4章 ネットワーク】 4.1 DataSource について . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2 OkHttpDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2.1 使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 CronetDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3.1 QUIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3.2 使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 【第5章 Codec】 5.1 Codec エクステンション . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.1.1 エクステンションのビルド . . . . . . . . . . . . . . . . . . . . . 38 5.1.2 エクステンションを取り込む . . . . . . . . . . . . . . . . . . . 38 5.1.3 エクステンションを利用する . . . . . . . . . . . . . . . . . . . 39 5.2 AV1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.3 VP9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.4 FLAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.5 Opus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.6 ffmpeg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 【第6章 Scheduler】 6.1 Scheduler の役割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2 WorkManagerScheduler . . . . . . . . . . . . . . . . . . . . . . . . . . 42 【第7章 RTMP】 7.1 RTMP vs WebRTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.2 RTMP で動画を配信する . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.3 RTMP で動画を再生する . . . . . . . . . . . . . . . . . . . . . . . . . 46 【第8章 TVで動画再生】 8.1 Leanback とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 8.2 Leanback の考え方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 8.2.1 Presenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8.2.2 PresenterSelector . . . . . . . . . . . . . . . . . . . . . . . . . 50 8.2.3 Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 8.3 TV で動画を再生する . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 【さいごに】
動作環境
- Android Studio 4.1 - Kotlin 1.4.10 - ExoPlayer 2.12.1
アップデート履歴
[2020-05-16: v1.0.0] - 初回リリース [2020-10-27: v1.1.0] - v2.12.1対応 - 細かい言い回しの修正