SlideShare une entreprise Scribd logo
1  sur  13
ライブストリーミング低遅延化の
取り組み @ DeNA
2018/08/31
株式会社ディー・エヌ・エー システム本部 技術開発室 樋口 証
DeNAのライブストリーミングサービス
 SHOWROOM
 Pococha
 Vtuber系ライブ配信サービス(開発中@DeNA)
 配信システムはほぼ共通
 RTMPで配信、RTMPかHLSで視聴
 現状、数秒程度の遅延がある。とくにHLSが遅い
 低遅延化に取り組んでいる
 最短 0.2 秒程度にまで低遅延化 (RTMP、HLS共)
 実際のサービスでは0.3秒 〜 1.0秒程度にできる見込み
 まもなくリリース
実際にテスト配信しているところ
 約250msの遅延
 インターネット越し
 RTMPで配信、HLSで視聴
 iPhoneからiPhoneに配信
 30fps
動画ライブストリーミングの遅延内訳
遅延の内訳
① カメラとディスプレイのラグ: 90ms
② 動画エンコード・デコード: 30ms
③ 上り・下りネットワーク通信による遅延: 30ms〜
• RTTと転送レートの両方が影響する
• 環境によって大きく変動する
④ クライアントとサーバ側のソフトウェア処理: 30ms〜
⑤ 動画プレイヤーのバッファリング: 数10ms〜
• スムースに再生するために必要なバッファリング
(現在開発中のシステム、Iphone8で測定)
①
②
③
④
⑤
遅延の内訳
遅延測定方法
 カメラとディスプレイのラグの測りかた
 カメラをプレビューし、撮影対象とプレビューの両
方を別のビデオカメラで撮影(右写真)
 プレビューが何フレーム遅れているか数える
 ライブストリーミング遅延の測りかた
 合わせ鏡方式: 視聴しているディスプレイを配信し
ているカメラで映す(先の動画)
 一周あたり何フレーム遅れているか数える
 カメラとディスプレイのラグを含めた遅延を測るこ
とができる
低遅延化のための基本方針(RTMP, HLS共通)
 視聴クライアント以外では一切バッファリングしない
 配信クライアントがキャプチャしたフレームはなるべく早く視聴クライアントへ送る
 視聴クライアントでは音声プレイヤーが音声フレームをバッファリング
 このバッファが network を含む全ての揺らぎを吸収する
 再生中の音声にタイミングを合わせて映像フレームを表示( lip sync )
 「現在再生中の音声の位置」を正確に知ることのできる音声プレイヤーを作る必要がある
HLS視聴の低遅延化
 個々の mpeg2ts チャンクをストリーム配信する
 HTTP 1.1 の chunked encodingを使う
 プレイリストには未完成のチャンクも含める
 一本のTCP接続を繋ぎっぱなし
 HTTP 1.1 の persistent connection
これでRTMPと同程度の遅延になる
 mpeg2ts チャンクの長さが長くなっても遅延は変わらない
 処理にかかるCPUコストはRTMPより少し高い
HLS視聴の低遅延化 ボツ案
 案1. チャンクを細かくする。1フレーム1チャンクのように。
 案2. チャンク1個だけ。実質的には mpeg2ts をストリーム配信しているだけになる
バッファリング処理(RTMP, HLS共通)
lip sync 処理
 音声プレイヤーにサンプルをバッファリング
 現在再生中の音声フレームとタイムスタンプが一致する映像フレームをディスプレイ
に表示する
音声を基準にして映像をそれに合わせる理由
 音声再生以外のタイマーに音声を同期させるのは困難
 音声の再生には必ずバッファリングが必要
 映像よりも音声のほうが途切れると目立つ
途切れにくさと低遅延のトレードオフ
 視聴クライアントでは音声プレイヤーが音声フレームをバッファリング
 このバッファが network を含む全ての揺らぎを吸収する
 音声にタイミングを合わせて映像フレームを表示 ( lip sync )
 バッファリング量が一定値になるよう常時調整
 このバッファが network を含む全ての揺らぎを吸収する
トレードオフ
 音声のバッファリング量を大きくすると、途切れにくくなるが遅延が大きくなる
 バッファリング量を小さくすると遅延が小さくなるが、network の揺らぎなどによっ
て音声が途切れやすくなる
バッファはどれくらい必要か
 配信側から視聴側までの経路の品質に依存
 品質のよい network であれば 100ms でもほとんど途切れることはない
 品質悪いとき 1秒くらいがよいか
 配信内容に応じてバッファ量を変える
 音声フレームに音楽が含まれていればバッファを大きくして途切れにくくする
さらなる低遅延化は可能か
 可能だが効果が薄いので実装していない
 サーバ側で個々のフレームをストリーミング処理すると少し早くできる
 特にキーフレームの network 遅延を避けられる効果がある
 HLSのプレイリスト取得
 TCPを2本使えばプレイリスト取得の往復の遅延を避けられる
 network が遠くないと効果が薄い
 サーバ側、クライアント側のソフトウェア処理についてもまだ改善の余地はある
 あと 30ms 程度の改善可能か
人材募集中
 Pococha
 温かくて居心地がいいソーシャルライブ空間をつくるエンジニア募集!
 https://www.wantedly.com/projects/237486
 新規Vtuber ライブ配信
 手軽にみんながVtuberになれる新ライブ配信サービス開発エンジニア募集!
 https://www.wantedly.com/projects/237624
 リーンな新規サービス立ち上げ
 DeNA社内ベンチャー組織で新しいネットサービスを生み出すエンジニア募集!
 https://www.wantedly.com/projects/160778

Contenu connexe

Tendances

WebRTCのオーディオ処理の謎、誰か教えて!
WebRTCのオーディオ処理の謎、誰か教えて!WebRTCのオーディオ処理の謎、誰か教えて!
WebRTCのオーディオ処理の謎、誰か教えて!mganeko
 
Try new transport protocol SRT (ver. 2)
Try new transport protocol SRT  (ver. 2)Try new transport protocol SRT  (ver. 2)
Try new transport protocol SRT (ver. 2)Tetsuyuki Kobayashi
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたonozaty
 
SFUの話
SFUの話SFUの話
SFUの話tnoho
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーションYoshifumi Kawai
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup samplemganeko
 
動画配信の基礎知識
動画配信の基礎知識動画配信の基礎知識
動画配信の基礎知識Daiyu Hatakeyama
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021whywaita
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
IoT用途で簡単に使えるWebRTC Engineを作った話
IoT用途で簡単に使えるWebRTC Engineを作った話IoT用途で簡単に使えるWebRTC Engineを作った話
IoT用途で簡単に使えるWebRTC Engineを作った話ToshiyaNakakura1
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updatemganeko
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。Masahiko Hashimoto
 
Network miner 使ってみた
Network miner 使ってみたNetwork miner 使ってみた
Network miner 使ってみた彰 村地
 
DeNAの大規模ライブ配信基盤を支える技術
DeNAの大規模ライブ配信基盤を支える技術DeNAの大規模ライブ配信基盤を支える技術
DeNAの大規模ライブ配信基盤を支える技術DeNA
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
 

Tendances (20)

WebRTCのオーディオ処理の謎、誰か教えて!
WebRTCのオーディオ処理の謎、誰か教えて!WebRTCのオーディオ処理の謎、誰か教えて!
WebRTCのオーディオ処理の謎、誰か教えて!
 
Try new transport protocol SRT (ver. 2)
Try new transport protocol SRT  (ver. 2)Try new transport protocol SRT  (ver. 2)
Try new transport protocol SRT (ver. 2)
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみた
 
SFUの話
SFUの話SFUの話
SFUの話
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
 
動画配信の基礎知識
動画配信の基礎知識動画配信の基礎知識
動画配信の基礎知識
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
IoT用途で簡単に使えるWebRTC Engineを作った話
IoT用途で簡単に使えるWebRTC Engineを作った話IoT用途で簡単に使えるWebRTC Engineを作った話
IoT用途で簡単に使えるWebRTC Engineを作った話
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
 
Network miner 使ってみた
Network miner 使ってみたNetwork miner 使ってみた
Network miner 使ってみた
 
DeNAの大規模ライブ配信基盤を支える技術
DeNAの大規模ライブ配信基盤を支える技術DeNAの大規模ライブ配信基盤を支える技術
DeNAの大規模ライブ配信基盤を支える技術
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 

Similaire à ライブストリーミング低遅延化の取り組み @ DeNA

インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版Yusei Yamanaka
 
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01Kazuhiro Ota
 
インターネットにおける動画配信の仕組み
インターネットにおける動画配信の仕組みインターネットにおける動画配信の仕組み
インターネットにおける動画配信の仕組みRyosuke Kubo
 
WebRTC配信とハードウェアエンコーダ
WebRTC配信とハードウェアエンコーダWebRTC配信とハードウェアエンコーダ
WebRTC配信とハードウェアエンコーダtnoho
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーHideo Kimura
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料Kentaro Matsumae
 
ライブストリーミング
ライブストリーミングライブストリーミング
ライブストリーミングYusei Yamanaka
 
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識ライブストリーミングの基礎知識
ライブストリーミングの基礎知識kumaryu
 

Similaire à ライブストリーミング低遅延化の取り組み @ DeNA (9)

動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS
 
インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版
 
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01
 
インターネットにおける動画配信の仕組み
インターネットにおける動画配信の仕組みインターネットにおける動画配信の仕組み
インターネットにおける動画配信の仕組み
 
WebRTC配信とハードウェアエンコーダ
WebRTC配信とハードウェアエンコーダWebRTC配信とハードウェアエンコーダ
WebRTC配信とハードウェアエンコーダ
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバー
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
 
ライブストリーミング
ライブストリーミングライブストリーミング
ライブストリーミング
 
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
 

Plus de akirahiguchi

Handlersocket 20140218
Handlersocket 20140218Handlersocket 20140218
Handlersocket 20140218akirahiguchi
 
How to debug a perl script using gdb
How to debug a perl script using gdbHow to debug a perl script using gdb
How to debug a perl script using gdbakirahiguchi
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906akirahiguchi
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517akirahiguchi
 
HandlerSocket plugin for MySQL (English)
HandlerSocket plugin for MySQL (English)HandlerSocket plugin for MySQL (English)
HandlerSocket plugin for MySQL (English)akirahiguchi
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 

Plus de akirahiguchi (6)

Handlersocket 20140218
Handlersocket 20140218Handlersocket 20140218
Handlersocket 20140218
 
How to debug a perl script using gdb
How to debug a perl script using gdbHow to debug a perl script using gdb
How to debug a perl script using gdb
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
 
HandlerSocket plugin for MySQL (English)
HandlerSocket plugin for MySQL (English)HandlerSocket plugin for MySQL (English)
HandlerSocket plugin for MySQL (English)
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 

ライブストリーミング低遅延化の取り組み @ DeNA