Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Live Streaming for Android
Search
Daichi Furiya (Wasabeef)
September 16, 2016
Programming
5
510
Live Streaming for Android
Introduction to Live Streaming
Daichi Furiya (Wasabeef)
September 16, 2016
Tweet
Share
More Decks by Daichi Furiya (Wasabeef)
See All by Daichi Furiya (Wasabeef)
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
6
2.6k
About Flutter Architecture
wasabeef
1
310
2023 Flutter/Dart Summary
wasabeef
0
120
I/O Extended 2023 - Dart と Flutter の新機能
wasabeef
0
220
I/O Extended 2023 - Flutter 活用事例
wasabeef
10
3.1k
What it Takes to be a Flutter Developer
wasabeef
0
230
FlutterKaigi 2022 Keynote
wasabeef
1
680
Flutter Hooks を使ったアプリ開発 / App Development with the Flutter Hooks
wasabeef
2
1.5k
Flutter 2021 の振り返りと今後のアプリ開発に向けて / Looking back on Flutter 2021 and for future app development.
wasabeef
4
2.2k
Other Decks in Programming
See All in Programming
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
150
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
640
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
350
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8.3k
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
130
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
350
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
150
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
460
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
270
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
140
AI 開発合宿を通して得た学び
niftycorp
PRO
0
160
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.4k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
260
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
450
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
84
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
A Tale of Four Properties
chriscoyier
163
24k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
200
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Optimizing for Happiness
mojombo
378
71k
Transcript
Live Streaming for Android wasabeef Shibuya.apk #10
About me Daichi Furiya Google Developer Expert AbemaTV, Inc. wasabeef
@wasabeef_jp
Streaming?
HLS MPEG-DASH Microsoft Smooth Streaming RTMP Streaming?
Streaming? HLS HLS Encryption, Ads, Meta Encode, BroadCast Transcode, HLS
RTMP
Video compression
Video compression 30fps 1sec 60KB × 30 = 1.8MB 1min
1.8MB × 60 = 108MB 1hour 108MB × 10 = 1.1GB 60KB 65KB 55KB 50KB
Video compression 60KB 5KB 2KB 7KB 30fps 1sec 60KB +
(4KB × 30) = 180KB 1min 60KB + (4KB × 1800) = 7.2MB 1hour 7.2MB × 10 = 72MB
Video compression Be impossible ;(
Key Frame Be possible :)
Video structure Video Audio Meta Butterfly…? Discovered
Format
Container format
.avi .mp4 .mkv .ogg .flv etc.. Container format Video H.264
H.265 Divx VP9 Audio AAC WMA Voribis PCM Caption SAMI, SMIL Hi-Caption CMML, DXFP Meta Date Author Title
Video codec
H.264/MPEG-4 AVC H.265/HEVC VP9 Video Codec
8K 300fps Half the size of AVC Android 5.+ H.265/HEVC
Audio codec
MP3 AAC Vorbis Audio Codec
HTTP Live Streaming
Apple Adaptive bitrate streaming MPEG2-TS H.264/AAC HLS
playlist.m3u8
#EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000 gear1/prog_index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111 gear2/prog_index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444 gear3/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777 gear4/prog_index.m3u8 playlist.m3u8
playlist.m3u8 gear1/prog_index.m3u8 BANDWIDTH: 200000 Header gear2/prog_index.m3u8 BANDWIDTH: 311111 gear3/prog_index.m3u8 BANDWIDTH:
484444 gear4/prog_index.m3u8 BANDWIDTH: 737777
#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10, no desc fileSequence0.ts #EXTINF:10, no desc
fileSequence1.ts #EXTINF:10, no desc ~~~ 2-179.ts ~~~ fileSequence180.ts #EXT-X-ENDLIST playlist.m3u8
ts?
Transport Stream (ts) fileSequence0.ts Container (2sec 〜 10sec)
playlist.m3u8 FileSequence1.ts Length: 5sec FileSequence2.ts Length: 5sec FileSequence3.ts Length: 5sec
FileSequence4.ts Length: 5sec Header Footer
playlist.m3u8 FileSequence1.ts Length: 5sec FileSequence2.ts Length: 5sec ad.ts Length: 5sec
FileSequence3.ts Length: 5sec Header Footer
Dynamic Adaptive Streaming over HTTP
Microsoft, Netflix, Google, Ericsson, Samsung, Adobe Adaptive bitrate streaming MP4,
WebM, MPEG2-TS MPEG-DASH
<mdp> - Root manifest.mdp <period> - A start time and
duration. <AdaptationSet> - Audio/Video content <Representation> - Bitrate and Aspect
DRM
WideVine
Google Modular (Android 4.3+) Classic (Android 3+) MPEG-DASH SurfaceView WideVine
PlayReady
MicroSoft PlayReady HLS Android 3+ TextureView PlayReady
ExoPlayer
Google OSS HLS, MPEG-DASH, SmoothStreaming WideVine (4.3+) https://github.com/google/ExoPlayer ExoPlayer
Amazon OSS Bug fix https://github.com/amzn/exoplayer-amazon-port ExoPlayer Amazon Port
Conclusion
Thank you. twitter.com/wasabeef_jp wasabeef.jp github.com/wasabeef