Upload
yoshinori-sugiyama
View
5.915
Download
3
Embed Size (px)
Citation preview
Live 配信のワークフロー- Takusuta TechConf #1 -
INTRODUCTION自己紹介
> 2011 年 CyberAgent 中途入社
> PC ピグゲーム ( ピグ / ピグワールド / ピグライフ ) の開発・運用
> 現在、ライブ配信動画サービス「 Takusuta 」を立ち上げ、運用中
杉山 仁則 (Yoshinori Sugiyama) ENGINEER
株式会社 タクスタ 従業員代表
@ syama666
#python #js #aws #node.js #mongodb ...
登場人物
配信サーバ (Wowza Streaming Engine)RTMP で up された Live を HLS 変換したり、番組を録画したりする。
Worker プロセス (Python)SQS を使用役割毎に別のプロセスを立ち上げ、別々のキューをポーリングSNS や Transcoder とも連携配信サーバと同居
API サーバー (Golang)番組のステータス管理や配信 URL の払い出し等行う
動画基盤
HTTPS
HTTPS
Amazon SNS(HTTPS)
HLS downstream(AWS Cloud Front)
RTMP upstream(wowza)
サービスと動画基盤の概要
HLS(live)
RTMP upstream
Live と VOD( アーカイブ ) の概要
HLS(vod)
encode(HLS)
AWS transcoder(HLS)
動画基盤
create streamRTMP url & key の発効
配信準備
live_ready
動画基盤
live_doing
RTMP upstream
配信開始
動画基盤
live_end
RTMP upstream disconnect
destroy streamRTMP url & key の無効化
配信終了
動画基盤
RTMP upstream disconnect
destroy streamRTMP url & key の無効化
配信終了 ( 時間切れパターン )
配信サーバVOD( 録画 / アーカイブ )
What’s Amazon Elastic Transcoder?
MP4 を HLS(playlist + ts files) に変換
参考 URL http://www.slideshare.net/AmazonWebServicesJapan/20131120-aws-medisterregeneratecloudfrontetspublic
What’s AWS SQS?
Worker プロセスと組み合わせて非同期処理するのに便利
参考 URLhttp://www.slideshare.net/takurosasaki/jawsug-snssqsses
What’s AWS SNS?
SQS, HTTP(S) と連携可能
参考 URLhttp://docs.aws.amazon.com/ja_jp/sns/latest/dg/SendMessageToHttp.html
attribute name example of attribute value 備考
applicationID takusuta サービス毎にユニークな値
streamName 8aed684929914b0a9edec26afefa1e0e@1436750704941 番組のキー
SQS Attributes format
プロセス キュー名 処理の内容
transcode_ready queue_transcode_ready_[host ip] エンコードの準備wowza が出力した mp4 を s3 にupload するwowza と worker の host が一致する必要があるのでキュー名のsuffix に ip をつけている
transcode_doing queue_transcode_doing エンコード実行Elastic Transcoder の API を実行する
transcode_end queue_transcode_end Elastic Transcodr からの通知を受け取る
transcode_end_notify queue_transcode_end_notify サービスに SNS 経由で通知する
SQS queue & worker process
配信サーバtranscode_ready の処理
mp4 ファイルupload
enqueue:queue_transcode_ready_xx.xx.xx.xx
dequeue:queue_transcode_ready_xx.xx.xx.xx
enqueue:queue_transcode_doing
配信サーバtranscode_doing の処理
dequeue:queue_transcode_doing
POST transcoder job
transcoding to HLS
配信サーバtranscode_end の処理
dequeue:queue_transcode_end job finished
notification
enqueue:queue_transcode_end_notify
配信サーバtranscode_end_notify の処理
dequeue:queue_transcode_end_notify
notification to HTTPS endpoint
・冪等性の担保・一タスクの処理をコンパクトに
まとめ
ご静聴ありがとうございました