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
230
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
390
[JAWS-SG#02] 個人開発やハッカソンで役立つ、便利APIのつくりかた
kkmory
0
120
rubyonjets_with_aws_for_research
kkmory
0
560
Slackであそぼ!!
kkmory
0
110
Git-study-Hackz-treasure
kkmory
0
240
飯塚ブロックチェーン勉強会 #1
kkmory
0
120
Swarm: The distributed storage platform
kkmory
1
750
Kindai_Blockchain_study01
kkmory
0
230
Other Decks in Programming
See All in Programming
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
3.7k
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
430
nekko cloudにおけるProxmox VE利用事例
irumaru
3
430
Spatial Rendering for Apple Vision Pro
warrenm
0
110
php-conference-japan-2024
tasuku43
0
290
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
命名をリントする
chiroruxx
1
410
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
780
クリエイティブコーディングとRuby学習 / Creative Coding and Learning Ruby
chobishiba
0
3.9k
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
情報漏洩させないための設計
kubotak
2
180
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
243
12k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Side Projects
sachag
452
42k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Building Your Own Lightsaber
phodgson
103
6.1k
RailsConf 2023
tenderlove
29
940
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Mobile First: as difficult as doing things right
swwweet
222
9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
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的な動画系アプリをつく) るために
ご清聴ありがとうございました