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
AWSで動画変換&配信基盤を作った話
Search
Keisuke Mori
July 11, 2019
Programming
0
210
AWSで動画変換&配信基盤を作った話
e-Zuka Tech Night #48
Keisuke Mori
July 11, 2019
Tweet
Share
More Decks by Keisuke Mori
See All by Keisuke Mori
AWSを使う上で意識しておきたい、クラウドセキュリティ超入門(駆け足版)
kkmory
0
360
[JAWS-SG#02] 個人開発やハッカソンで役立つ、便利APIのつくりかた
kkmory
0
99
rubyonjets_with_aws_for_research
kkmory
0
530
Slackであそぼ!!
kkmory
0
100
Git-study-Hackz-treasure
kkmory
0
210
飯塚ブロックチェーン勉強会 #1
kkmory
0
110
Swarm: The distributed storage platform
kkmory
1
720
Kindai_Blockchain_study01
kkmory
0
220
Other Decks in Programming
See All in Programming
JavaScript Closure
asoluka
0
2k
Runtime Objects in Rust
mitsuhiko
0
220
FoodGram
iseruuuuu
0
230
otelcol receiver 自作RTA / Pepabo Tech Conference #22 春のSREまつり
arthur1
0
880
mb_trim関数を作りました
youkidearitai
PRO
1
200
The grand strategy of Ruby Parser
yui_knk
5
280
slow types ってなんだろう?
karad
0
210
『WordPressコミュニティで学ぶ』OSS貢献の多様性
ippey
0
230
RaaP
ksss
0
160
欠陥を早期に発見するための Software Engineer in Test とその重要性 / What is Software Engineer in Test and How they works
orgachem
PRO
17
2.3k
Namespace, What and Why
tagomoris
3
670
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
0
1.1k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
245
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
In The Pink: A Labor of Love
frogandcode
138
21k
Gamification - CAS2011
davidbonilla
77
4.6k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Practical Orchestrator
shlominoach
183
9.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
23
1.7k
Docker and Python
trallard
35
2.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
Transcript
Tikる e-Zuka Tech Night #48 Keisuke Mory Tik(Tok的な動画系アプリをつく)る
自己紹介
もりけいすけ @moririn772
近畿大学 山崎ゼミ3年
Bitcoin
Ruby
None
None
Tikる
None
Tikる= TikTokに動画を投稿する
Tikる= TikTokに動画を投稿する
Tikる= TikTok 的な動画系アプリを それっぽく作る
Tikる= TikTok 的な動画系アプリを それっぽく作る
タイトル詐欺を お許しください
Long Talk になってしまうので 配信基盤の話だけになります
AWSで変換&配信基盤を作った話 e-Zuka Tech Night #48 Keisuke Mory Tik (Tok的な動画系アプリをつく) るために
動画ストリーミング配信
MP4 ばらまく?
MP4 ばらまく?
RTMP
RTMP
HLSでばらまく
HLSでばらまく "
HLS HTTP LIVE STREAMING
HLS HTTPベースの配信プロトコル .m3u8 → プレイリストファイル .ts → 分割された動画ファイル
HLS VOD, Streaming 両方OK アダプティブストリーミング CDNと親和性GOOD
https://developer.apple.com/documentation/http_live_streaming
MP4 → HLS に変換して 見れる状態にしたい
今回のアーキテクチャ
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
MediaConvert 動画 ユーザー
S3に動画をアップロード (今回は .mp4 を想定) S3 - 変換前 Lambda S3 -
変換後 配信用 Cloud Front 動画 ユーザー MediaConvert
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
動画 ユーザー MediaConvert アップロードが完了するとLambdaが発火 MediaConvert に変換ジョブをぶん投げる
.mp4 => HLS に変換 変換後のファイルを 出力用バケットに吐き出す S3 - 変換前 Lambda
S3 - 変換後 配信用 Cloud Front 動画 ユーザー MediaConvert
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
動画 ユーザー MediaConvert Cloud Front を介していい感じに エンドユーザーへ配信される
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
MediaConvert 動画 ユーザー
細かいところをみていきましょう
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
MediaConvert 動画 ユーザー
全体こんな感じ
全体こんな感じ Lambda からこのへんの サービスにアクセスしたい
IAMロールの作成
さっき作ったやつ
アップロード用バケットに .mp4ファイルが追加されたら
handler.rb の transcode_videoメソッドが発火
MediaConverter に 変換ジョブを送りつける (CloudWatchにログを吐く) 見えないと思うのでGitHub参照 https://gist.github.com/moririn772/ 7aba5a673d77aea75df19a254a5a1627
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
MediaConvert 動画 ユーザー
ジョブテンプレートを作成 入力 HLS JPEG ジョブテンプレートの例 出力 MP4 入出力の設定(形式, コーデック etc…)をテンプレ化
ごにょごにょ ごにょごにょ
セグメント長 :10秒 シングルディレクトリ構造
コーデック :MPEG-4 H.264 フレームレート:30 ビットレート :5000000
サムネイルの生成も同時に行う (今回は1枚だけ)
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
MediaConvert 動画 ユーザー
S3 - 変換前 Lambda S3 - 変換後 配信用 Cloud Front
MediaConvert 動画 ユーザー
ハマったポイント
Endpointがなんちゃら〜 のエラー 解決の参考→ [小ネタ] AWS Elemental MediaConvertをAWS CLIで使うときの注意点!〜アカウント個別のendpointを指定しよう〜 https://dev.classmethod.jp/cloud/aws/aws-elemental-mediaconvert-aws-cli-command-needs-endpoint-url-option/#toc-endpointmediaconvert
Endpointがなんちゃら〜 のエラー ここに書いてある
Endpointがなんちゃら〜 のエラー クライアントのインスタンスを 作る際に渡してあげる
やってみる
ユーザーが動画をアップロード ※ 説明用にコンソールからアップロード
ジョブが走り出す
None
None
動画配信のサービスが つくれそうな気がする
やっていきましょう
告知
None
@学生の皆さん 興味があれば是非
@企業の皆さん スポンサー, 会場提供等 ご検討ください
AWSで変換&配信基盤を作った話 e-Zuka Tech Night #48 Keisuke Mory Tik (Tok的な動画系アプリをつく) るために
ご清聴ありがとうございました