Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWSで動画変換&配信基盤を作った話
Search
Keisuke Mori
July 11, 2019
Programming
0
250
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
1
410
[JAWS-SG#02] 個人開発やハッカソンで役立つ、便利APIのつくりかた
kkmory
0
150
rubyonjets_with_aws_for_research
kkmory
0
590
Slackであそぼ!!
kkmory
0
130
Git-study-Hackz-treasure
kkmory
1
270
飯塚ブロックチェーン勉強会 #1
kkmory
0
140
Swarm: The distributed storage platform
kkmory
1
810
Kindai_Blockchain_study01
kkmory
0
260
Other Decks in Programming
See All in Programming
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
320
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
200
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
120
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
150
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
230
Cap'n Webについて
yusukebe
0
130
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
React Native New Architecture 移行実践報告
taminif
1
150
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
390
AIコーディングエージェント(skywork)
kondai24
0
160
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Fireside Chat
paigeccino
41
3.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Automating Front-end Workflow
addyosmani
1371
200k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
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的な動画系アプリをつく) るために
ご清聴ありがとうございました