21
Live 配配配配配配配配配 - Takusuta TechConf #1 -

Live配信のワークフロー takusuta tech conf #1

Embed Size (px)

Citation preview

Page 1: Live配信のワークフロー takusuta tech conf #1

Live 配信のワークフロー- Takusuta TechConf #1 -

Page 2: Live配信のワークフロー takusuta tech conf #1

INTRODUCTION自己紹介

> 2011 年 CyberAgent 中途入社

> PC ピグゲーム ( ピグ / ピグワールド / ピグライフ ) の開発・運用

> 現在、ライブ配信動画サービス「 Takusuta 」を立ち上げ、運用中

杉山 仁則 (Yoshinori Sugiyama) ENGINEER

株式会社 タクスタ 従業員代表

@ syama666

#python #js #aws #node.js #mongodb ...

Page 3: Live配信のワークフロー takusuta tech conf #1

登場人物

配信サーバ (Wowza Streaming Engine)RTMP で up された Live を HLS 変換したり、番組を録画したりする。

Worker プロセス (Python)SQS を使用役割毎に別のプロセスを立ち上げ、別々のキューをポーリングSNS や Transcoder とも連携配信サーバと同居

API サーバー (Golang)番組のステータス管理や配信 URL の払い出し等行う

Page 4: Live配信のワークフロー takusuta tech conf #1

動画基盤

HTTPS

HTTPS

Amazon SNS(HTTPS)

HLS downstream(AWS Cloud Front)

RTMP upstream(wowza)

サービスと動画基盤の概要

Page 5: Live配信のワークフロー takusuta tech conf #1

HLS(live)

RTMP upstream

Live と VOD( アーカイブ ) の概要

HLS(vod)

encode(HLS)

AWS transcoder(HLS)

Page 6: Live配信のワークフロー takusuta tech conf #1

動画基盤

create streamRTMP url & key の発効

配信準備

live_ready

Page 7: Live配信のワークフロー takusuta tech conf #1

動画基盤

live_doing

RTMP upstream

配信開始

Page 8: Live配信のワークフロー takusuta tech conf #1

動画基盤

live_end

RTMP upstream disconnect

destroy streamRTMP url & key の無効化

配信終了

Page 9: Live配信のワークフロー takusuta tech conf #1

動画基盤

RTMP upstream disconnect

destroy streamRTMP url & key の無効化

配信終了 ( 時間切れパターン )

Page 10: Live配信のワークフロー takusuta tech conf #1

配信サーバVOD( 録画 / アーカイブ )

Page 11: Live配信のワークフロー takusuta tech conf #1

What’s Amazon Elastic Transcoder?

MP4 を HLS(playlist + ts files) に変換

参考 URL http://www.slideshare.net/AmazonWebServicesJapan/20131120-aws-medisterregeneratecloudfrontetspublic

Page 12: Live配信のワークフロー takusuta tech conf #1

What’s AWS SQS?

Worker プロセスと組み合わせて非同期処理するのに便利

参考 URLhttp://www.slideshare.net/takurosasaki/jawsug-snssqsses

Page 13: Live配信のワークフロー takusuta tech conf #1

What’s AWS SNS?

SQS, HTTP(S) と連携可能

参考 URLhttp://docs.aws.amazon.com/ja_jp/sns/latest/dg/SendMessageToHttp.html

Page 14: Live配信のワークフロー takusuta tech conf #1

attribute name example of attribute value 備考

applicationID takusuta サービス毎にユニークな値

streamName 8aed684929914b0a9edec26afefa1e0e@1436750704941 番組のキー

SQS Attributes format

Page 15: Live配信のワークフロー takusuta tech conf #1

プロセス キュー名 処理の内容

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

Page 16: Live配信のワークフロー takusuta tech conf #1

配信サーバtranscode_ready の処理

mp4 ファイルupload

enqueue:queue_transcode_ready_xx.xx.xx.xx

dequeue:queue_transcode_ready_xx.xx.xx.xx

enqueue:queue_transcode_doing

Page 17: Live配信のワークフロー takusuta tech conf #1

配信サーバtranscode_doing の処理

dequeue:queue_transcode_doing

POST transcoder job

transcoding to HLS

Page 18: Live配信のワークフロー takusuta tech conf #1

配信サーバtranscode_end の処理

dequeue:queue_transcode_end job finished

notification

enqueue:queue_transcode_end_notify

Page 19: Live配信のワークフロー takusuta tech conf #1

配信サーバtranscode_end_notify の処理

dequeue:queue_transcode_end_notify

notification to HTTPS endpoint

Page 20: Live配信のワークフロー takusuta tech conf #1

・冪等性の担保・一タスクの処理をコンパクトに

まとめ

Page 21: Live配信のワークフロー takusuta tech conf #1

ご静聴ありがとうございました