Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWSで動画変換&配信基盤を作った話
Search
Keisuke Mori
July 11, 2019
Programming
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSで動画変換&配信基盤を作った話
e-Zuka Tech Night #48
Keisuke Mori
July 11, 2019
Transcript
69 slides
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的な動画系アプリをつく) るために
ご清聴ありがとうございました
More Decks by Keisuke Mori
See All by Keisuke Mori
AWSを使う上で意識しておきたい、クラウドセキュリティ超入門(駆け足版)
kkmory
1
450
[JAWS-SG#02] 個人開発やハッカソンで役立つ、便利APIのつくりかた
kkmory
0
170
rubyonjets_with_aws_for_research
kkmory
0
630
Slackであそぼ!!
kkmory
0
150
Git-study-Hackz-treasure
kkmory
1
310
飯塚ブロックチェーン勉強会 #1
kkmory
0
170
Swarm: The distributed storage platform
kkmory
1
860
Kindai_Blockchain_study01
kkmory
0
280
Other Decks in Programming
See All in Programming
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
300
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
210
Modernizing iOS Apps
seyfoyun
0
150
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
570
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
320
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
310
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
170
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
150
Seven New Principles of Software Engineering
yegor256
0
490
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
240
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.7k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
121
130k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
1
300
Designing for Performance
lara
612
70k
Building Adaptive Systems
keathley
44
3.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
520
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
590
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
Done Done
chrislema
187
17k