1日数万件の1秒動画を安定して生成するために / How to create ten of thousands of 1sec movies with FFmpeg
by
nyuki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1日数万件の1秒動画を 安定して生成するために 株式会社ミクシィ みてね事業部 中野裕貴
Slide 2
Slide 2 text
自己紹介 2 • 中野裕貴(なかのゆうき) • 「みてね」に来て1年半くらい • (必要があれば書くくらいの)FFmpeg おじさん
Slide 3
Slide 3 text
目次 • 1秒動画の要件 • 今までの処理手順 • Filtergraph の活用 • 壊れたメディアをどうするか 3
Slide 4
Slide 4 text
1秒動画の要件 この写真 の作成者 U.S. Department of Agriculture は CC BY のライセンスを許諾されています 必ずお届けしたい 1日最大数万件を処理する速度 この写真 の作成者 Andreas Praefcke は CC BY-SA のライセンスを許諾されています
Slide 5
Slide 5 text
構成図 送信 OpsWorks S3 SQS S3 SQS EC2 Aurora Redis EC2 Redis アプリサーバ Transcoder Aurora 受信 送信 受信 受信 受信 送信 送信 OpsWorks Sidekiq: https://github.com/mperham/sidekiq FFmpeg: https://ffmpeg.org/
Slide 6
Slide 6 text
今までの処理手順 6 fade zoom resize crop rotate combine 次 次 次 次 次
Slide 7
Slide 7 text
今までの処理手順 7 fade zoom resize crop rotate combine 次 次 次 次 次
Slide 8
Slide 8 text
Filtergraph である程度まとめる Filtergraph: https://ffmpeg.org/ffmpeg-filters.html#Filtergraph-description
Slide 9
Slide 9 text
Filtergraph この部分
Slide 10
Slide 10 text
Filtergraphを抽象化したい Filtergraph クラス 各種設定はオプションで渡す (解像度や動画の⾧さなど) 処理はメソッドにまとめる (filter_graph.split.resize.fadeとかしたい)
Slide 11
Slide 11 text
例 画像を動画化してリサイズ、フェードインしながら表示
Slide 12
Slide 12 text
https://pixta.jp/tags/md[109955] デモ動画
Slide 13
Slide 13 text
Filtergraph である程度まとめる この画像の作成者 Twemoji v2 project は CC BY のライセンスを許諾されています ある程度???
Slide 14
Slide 14 text
コマンド一撃で作成すると • どこでエラーが発生したかわからない • 結合時にエラー発生するとデバッグがたいへん • Filtergraph である程度まとめるが、ある程度のところで出力 • デバックしやすい • ユーザさんからのお問い合わせ対応しやすい
Slide 15
Slide 15 text
言いたいことは メディアは壊れます!!! ということです
Slide 16
Slide 16 text
なぜこわれるか 壊 - 通信が途切れる - 謎の編集ソフトを通している
Slide 17
Slide 17 text
切り出せない 音声だけ 壊れている メタデータが 一部破損 壊
Slide 18
Slide 18 text
壊れたメディアを蓄積 SQS EC2 Aurora アプリサーバ EC2 Transcoder エラー発生!
Slide 19
Slide 19 text
壊れたメディアを蓄積 送信 SQS EC2 Aurora アプリサーバ EC2 Transcoder
Slide 20
Slide 20 text
壊れたメディアを蓄積 受信 SQS EC2 Aurora アプリサーバ EC2 Transcoder
Slide 21
Slide 21 text
壊れたメディアを蓄積 SQS EC2 Aurora アプリサーバ EC2 Transcoder broken_media テーブル
Slide 22
Slide 22 text
壊れたメディアを蓄積 SQS EC2 Aurora アプリサーバ EC2 Transcoder 壊れたメディア を除いて 翌日再生成
Slide 23
Slide 23 text
再生成でほぼすべて救えている この写真 の作成者小野慎二郎 は CC BY-SA のライセンスを許諾されています
Slide 24
Slide 24 text
この写真 の作成者 U.S. Department of Agriculture は CC BY のライセンスを許諾されています 1秒動画できてる!
Slide 25
Slide 25 text
まとめ • ある程度速度を担保しつつ、必ずお届けする • 速度の担保 • Filtergraphの活用 • 必ずお届け • 壊れたメディアの扱い