Upgrade to Pro — share decks privately, control downloads, hide ads and more …

動画合成アーキテクチャを実装してみて

 動画合成アーキテクチャを実装してみて

Pairsでリリースされた新機能アイキャッチを実装した際の振り返りです.
下記の登壇資料になります.
https://kauche.connpass.com/event/252043/
より詳細な内容はブログをご覧ください.
https://medium.com/eureka-engineering/video-synthesis-architecture-of-pairs-eyecatch-5eb5810074a6

D5b3791309c8a03d37f05d238ded370d?s=128

Satoru Kitaguchi

July 19, 2022
Tweet

Other Decks in Programming

Transcript

  1. © 2021 eureka, Inc. All Rights Reserved. 動画合成アーキテクチャを 実装してみて Backend

    LT会(#venture_backend_lt) 2022/07/20 Kitaguchi Satoru
  2. © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not

    for Public Distribution - Do Not Copy All Hands Meeting Kitaguchi Satoru 23卒 Backend エンジニア EC、ゲーム、広告など数社のインターンを経て、eurekaへ入社予定です 業務では決済基盤やPairsの機能開発に携わっています 休日はGoやCを書いたり、ロードバイクやサッカーをしたりします © 2021 eureka, Inc. All Rights Reserved.
  3. © 2021 eureka, Inc. All Rights Reserved. Mission 人生に「あってよかった」と思ってもらえるものを。
 To

    provide a life-changing service that people will remember with great fondness.
  4. © 2021 eureka, Inc. All Rights Reserved. Vision かけがえのない人との出会いを生み出し、
 日本、アジアにデーティングサービス


    文化を定着させる。
 To help people find their life partner and make dating services a social norm in Japan and Asia.
  5. © 2021 eureka, Inc. All Rights Reserved.

  6. 6 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting • 新機能のアイキャッチとは • クライアント・バックエンドで動画合成する実装案 • 採用したアーキテクチャ • 直面した課題と解決方法 Agenda © 2021 eureka, Inc. All Rights Reserved.
  7. 7 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting 新機能のアイキャッチとは さがす画面で自分のプロフィールをフレーム付きで表示し、 趣味や好みのあうお相手からの注目を集められる機能 © 2021 eureka, Inc. All Rights Reserved. ※iPhoneアプリで先行的に提供されています(2022年7月現在) ※iPhone 8以上のでご利用を推奨します ※iOS 12以下は非対応です
  8. 8 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting 技術要件 © 2021 eureka, Inc. All Rights Reserved. 1. ニアリアルタイムで静止画の上に動画を合成する
 2. ピンチインピンチアウトして調整できる
 3. 合成前にクライアントでのプレビューが必須
 4. 同時にコメントを審査しなければならない

  9. 9 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting クライアントの実装案 © 2021 eureka, Inc. All Rights Reserved. プレビューとの整合性が取れる
 バックエンドで動画合成する際の負荷をク ライアントで受け持てる
 端末依存
 動画の検品が必須
 リクエストペイロードが重たくなる
 動画編集SDKを利用して合成しAPI経由で動画をアップロードする
 Pros
 Cons

  10. 10 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting バックエンド実装案 © 2021 eureka, Inc. All Rights Reserved. Pros Cons AWS Elemental MediaConvert • フルマネージドでつなぎ込みも楽 • 動画ワークフローに最適化されている • 結局FFmpegなどで前処理が必要 • Image Insert機能の検証がいる AWS Batch on AWS Fargate • 実行時間を気にする必要がない • CPUを使うので流量が読めないとしんどい • インスタンスのスケールに気を遣う • Lambdaに比べてオーバーヘッドが大きい • Lambdaに比べて環境構築に時間がかかる Lambda + Custom Layer • 環境構築が容易 • zipに固めてアップロードするだけで良い • 依存の追加と削除が楽 • S3でzipのバージョンコントロールできる • 15分以内の実行時間制限 • 10GB以内のメモリ制限 • 同時実行数に制限がある • 5つまでのレイヤー制限 Lambda + container image • 柔軟性がある • Lambda用のコンテナは一般的な コンテナイメージの作り方とは異なる
  11. 11 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting バックエンド実装案 © 2021 eureka, Inc. All Rights Reserved. Pros Cons AWS Elemental MediaConvert • フルマネージドでつなぎ込みも楽 • 動画ワークフローに最適化されている • 結局FFmpegなどで前処理が必要 • Image Insert機能の検証がいる AWS Batch on AWS Fargate • 実行時間を気にする必要がない • CPUを使うので流量が読めないとしんどい • インスタンスのスケールに気を遣う • Lambdaに比べてオーバーヘッドが大きい • Lambdaに比べて環境構築に時間がかかる Lambda + Custom Layer • 環境構築が容易 • zipに固めてアップロードするだけで良い • 依存の追加と削除が楽 • S3でzipのバージョンコントロールできる • 15分以内の実行制限 • 10GB以内のメモリ制限 • 同時実行数に制限がある • 5つまでのレイヤー制限 Lambda + container image • 柔軟性がある • Lambda用のコンテナは一般的な コンテナイメージの作り方とは異なる
  12. 12 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting 実際のアーキテクチャ © 2021 eureka, Inc. All Rights Reserved.
  13. 13 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting 直面した課題と解決方法 fpsなど動画チューニングし、 ファイルサイズを圧縮する FastStart化してストリーム形式にする パイプライン処理にする テキスト審査を非同期に処理する SQSのDLQで監視し、リトライさせる DBアクセスを最小限に抑えるため、 SQSにS3パスを格納する © 2021 eureka, Inc. All Rights Reserved. 端末負荷 合成時間 機能をすぐ利用できないため ユーザー体験が良くない (プレビューでは動画はできているので) 端末が発熱する さがす画面が重くなる 端末の充電の減りが速くなる
  14. 14 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION:

    Not for Public Distribution - Do Not Copy All Hands Meeting 振り返ってみて © 2021 eureka, Inc. All Rights Reserved. • さまざまな実装パターンを検討する
 • 実装パターンのメリデメ出す
 • クライアントサイドや先輩エンジニアとディスカッション
 ユースケースに応じて最適なアーキテクチャを選定するには
 詳細はブログにまとめたのでぜひご覧ください
 https://medium.com/eureka-engineering/video-synthesis-architecture-of- pairs-eyecatch-5eb5810074a6