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
1日数万件の1秒動画を安定して生成するために / How to create ten of t...
Search
nyuki
February 13, 2019
4.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
1日数万件の1秒動画を安定して生成するために / How to create ten of thousands of 1sec movies with FFmpeg
nyuki
February 13, 2019
More Decks by nyuki
See All by nyuki
BigQuery で1秒動画の配信対象家族を爆速で抽出する / How to create 1sec movie schedules with bigquery
nyuki
0
4.8k
Deep Learningを用いた類似画像レコメンドのSQL on Hadoopによる実現
nyuki
2
2.8k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.7k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How to Talk to Developers About Accessibility
jct
2
540
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
500
Evolving SEO for Evolving Search Engines
ryanjones
0
290
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Transcript
1日数万件の1秒動画を 安定して生成するために 株式会社ミクシィ みてね事業部 中野裕貴
自己紹介 2 • 中野裕貴(なかのゆうき) • 「みてね」に来て1年半くらい • (必要があれば書くくらいの)FFmpeg おじさん
目次 • 1秒動画の要件 • 今までの処理手順 • Filtergraph の活用 • 壊れたメディアをどうするか
3
1秒動画の要件 この写真 の作成者 U.S. Department of Agriculture は CC BY
のライセンスを許諾されています 必ずお届けしたい 1日最大数万件を処理する速度 この写真 の作成者 Andreas Praefcke は CC BY-SA のライセンスを許諾されています
構成図 送信 OpsWorks S3 SQS S3 SQS EC2 Aurora Redis
EC2 Redis アプリサーバ Transcoder Aurora 受信 送信 受信 受信 受信 送信 送信 OpsWorks Sidekiq: https://github.com/mperham/sidekiq FFmpeg: https://ffmpeg.org/
今までの処理手順 6 fade zoom resize crop rotate combine 次 次
次 次 次
今までの処理手順 7 fade zoom resize crop rotate combine 次 次
次 次 次
Filtergraph である程度まとめる Filtergraph: https://ffmpeg.org/ffmpeg-filters.html#Filtergraph-description
Filtergraph この部分
Filtergraphを抽象化したい Filtergraph クラス 各種設定はオプションで渡す (解像度や動画の⾧さなど) 処理はメソッドにまとめる (filter_graph.split.resize.fadeとかしたい)
例 画像を動画化してリサイズ、フェードインしながら表示
https://pixta.jp/tags/md[109955] デモ動画
Filtergraph である程度まとめる この画像の作成者 Twemoji v2 project は CC BY のライセンスを許諾されています
ある程度???
コマンド一撃で作成すると • どこでエラーが発生したかわからない • 結合時にエラー発生するとデバッグがたいへん • Filtergraph である程度まとめるが、ある程度のところで出力 • デバックしやすい
• ユーザさんからのお問い合わせ対応しやすい
言いたいことは メディアは壊れます!!! ということです
なぜこわれるか 壊 - 通信が途切れる - 謎の編集ソフトを通している
切り出せない 音声だけ 壊れている メタデータが 一部破損 壊
壊れたメディアを蓄積 SQS EC2 Aurora アプリサーバ EC2 Transcoder エラー発生!
壊れたメディアを蓄積 送信 SQS EC2 Aurora アプリサーバ EC2 Transcoder
壊れたメディアを蓄積 受信 SQS EC2 Aurora アプリサーバ EC2 Transcoder
壊れたメディアを蓄積 SQS EC2 Aurora アプリサーバ EC2 Transcoder broken_media テーブル
壊れたメディアを蓄積 SQS EC2 Aurora アプリサーバ EC2 Transcoder 壊れたメディア を除いて 翌日再生成
再生成でほぼすべて救えている この写真 の作成者小野慎二郎 は CC BY-SA のライセンスを許諾されています
この写真 の作成者 U.S. Department of Agriculture は CC BY のライセンスを許諾されています
1秒動画できてる!
まとめ • ある程度速度を担保しつつ、必ずお届けする • 速度の担保 • Filtergraphの活用 • 必ずお届け •
壊れたメディアの扱い