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
React NativeアプリでコラボLIVE配信 / Collaboration Live ...
Search
stand.fm
December 18, 2020
Programming
4.4k
1
Share
React NativeアプリでコラボLIVE配信 / Collaboration Live Streaming with React Native App
React NativeアプリでWebRTCの通話内容をライブ配信する仕組みについてです。
stand.fm
December 18, 2020
More Decks by stand.fm
See All by stand.fm
stand.fm会社紹介資料
standfm
0
1.3k
stand.fmのTypeScriptへの移行と活用/migrating-to-typescript-standfm
standfm
0
2.5k
stand.fmの最近の取り組み: アプリ起動速度の改善/improvement-of-speed-startup-app
standfm
4
2.9k
ReactNative製アプリがAndroidだと遅いという問題に立ち向かった話/the problem that React Native apps are slow on Android
standfm
1
3.5k
LIVEの負荷対策と監視について / About LIVE load countermeasures and monitoring
standfm
0
8.9k
声でつながる、 優しい世界を創るUI/UX
standfm
4
600
stand.fm(Android)におけるreact-native-track-playerの改善/Improvement of react-native-track-player on standfm Android app
standfm
0
420
stand.fmにおける開発体験とパフォーマンスの向上 / Development Experience and Performance improvement
standfm
1
7.8k
エンジニア向け会社紹介資料 / company deck for engineers
standfm
7
68k
Other Decks in Programming
See All in Programming
エージェンティックRAGにAWSで入門しよう!
har1101
7
1.1k
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
2.8k
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
270
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
350
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
500
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
220
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.5k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
500
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
120
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
240
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Building the Perfect Custom Keyboard
takai
2
780
Transcript
React NativeアプリでコラボLIVE配信 瀬戸口 司 TECH STAND #2 React Native
自己紹介 Tsukasa Setoguchi Programmer GitHub: @set0gut1 Twitter: @set0gut1 stand.fmの開発を2年半くらい前から やってます(初期からいる)
今日話すこと 『React NativeアプリでコラボLIVE配信』 React Nativeで作っているstand.fmで 配信者とゲストの会話をLIVE配信する機能の アーキテクチャと使用ライブラリの概要
コラボLIVE配信: 機能概要 LIVE配信機能(一人配信) • 配信者がリアルタイムに声を多数のリスナー配信できる • リスナーはテキストチャットでコメントできる コラボLIVE配信機能 • 配信者はリスナーの中から数人のゲストを招待
• 配信者とゲストの間で通話ができる • 通話内容を多数のリスナーに配信できる 一人の語りで面白い音声コンテンツを作るのは難しいけど 対話からは楽しみとともに面白いコンテンツが生まれやすい
アーキテクチャ概観(コラボLIVE配信)
LIVEサーバ LIVEサーバはWowza Streaming Engineを利用 • 動画ストリーミング用のサーバソフトウェア • ライセンスを購入してサーバにインストールする
HLS: HTTP Live Streaming 1秒の音声ファイル(セグメントファイル)が LIVEの直近3秒ぶんくらい記述されている (というのをLIVEサーバがやってくれる) インデックスファイル https://${serverHost}/live/${liveId}/playlist.m3u8
LIVEサーバ → CDN → リスナー react-native-track-playerがHLSの 再生に対応している
配信者 → LIVEサーバ(一人LIVE配信オンリーのとき) Wowza配布のiOS用/Android用SDKで 音声を録音してLIVEサーバに送信できる React Nativeから使う用のインタフェースを追加して native modulesとして利用してた (コラボLIVE配信つくる前まで)
アーキテクチャ概観(一人LIVE配信オンリーのとき)
一人LIVE配信とコラボLIVE配信の差分 一人LIVE配信を拡張してコラボ機能をつけるために 音声まわりで必要だったこと • 数人のゲストと通話する • 通話内容をLIVEサーバに送信する 通話機能の部分はWebRTCを利用する
WebRTC WebRTC: Web Real-Time Communication ウェブブラウザ間のP2P通信でUDPを使って 低遅延のビデオチャットができる(ざっくり) stand.fmは音声部分のみ利用 • WebRTC:
遅延0.1秒くらい • ちなみにHLSは遅延10秒くらい
アーキテクチャ概観(コラボ収録) 【コラボ収録】 複数人で収録を行う機能 配信者の端末に音声ファイルとして集約して 編集しながら収録できる(切り取り・挿入)
アーキテクチャ概観(コラボLIVE配信)
コラボLIVE配信: 配信者のアプリの音声まわりの構成 • 通話 ◦ 通話だけならreact-native-webrtcでオッケー ◦ 実は通話音声を取得することができず、 このためにWebRTCライブラリ本体と react-native-webrtcをforkして改造
• 音声サーバへの送信 ◦ HaishinKitでRTMP送信(iOS) ◦ react-native-live-publisherというnpmパッケージを 自作して利用
まとめ: React Nativeまわりで、できたこと・やったこと React NativeアプリでコラボLIVE配信機能を作りました react-native系のライブラリを使うとできたこと • HLSを視聴する • WebRTCで通話する
forkやnative moduleが必要だったこと • WebRTCの通話音声を得る • LIVEサーバに配信内容を送信する (↑Android版ではコラボ収録・コラボLIVE配信が未完成)
各種OSSライブラリのリンク react-native-track-player https://github.com/react-native-kit/react-native-track-player react-native-webrtc https://github.com/react-native-webrtc/react-native-webrtc WebRTC https://opensource.google/projects/webrtc HaishinKit https://github.com/shogo4405/HaishinKit.swift
None