見出し画像

REALITYにショート動画の投稿機能を入れてみた REALITY Advent Calendar #8

REALITY Advent Calendar 2022 8日目担当のサーバチームのあさだです。
昨年まではUnityチームのあさだとして過ごしていましたが、今年からは心機一転サーバチームにジョインさせていただき、日々業務に励んでおります。
前回の合宿時には下記のようなものを作っていました。

作ったもの

今回合宿で作ったものは「ショート動画の投稿機能」になります。
サーバエンジニアとして業務を行っていますが、基本的にはコードを書くことが多く、REALITYのバックエンドで利用しているGoogle Cloud Platform(以下GCP)のサービスの学習をあまりしていなかったので、思い切って動画投稿周りをイチから作ってみようと、今回の合宿で開発チャレンジしてきました。

今回使ってみたGCPのサービス

今回、ショート動画の投稿機能を作る上で、触ってみたGCPのサービスは以下の3つです。

  • Google Cloud Storage

  • Google Cloud Functions

  • Transcoder API

Google Cloud Storage

ファイルの管理などを行うサービスです。動画・サムネイルなどのメディアの管理に使いました。クライアントから署名付きURLをリクエストし、メディアデータのアップロード及びダウンロードを行うのに使いました。

Google Cloud Functions

クラウド上でコードを実行できるサービスです。こちらを利用して、動画がCloud Storage上にアップロードされたことをトリガーに、動画のエンコードの処理を実行します。

Transcoder API

動画や音声の編集などを行うことができるAPIです。こちらのAPIで、アップロードされた動画ファイルのエンコードを行い、ショート動画に適した形式に変換します。今回はメジャーなHLSのデータ形式に変換しました。

機能の流れ

まず、サーバ上でGCSに動画をアップロードするための署名付きURLを発行します。これについては既存のコードを流用させていただきました。

アップロードを行うクライアントはWebサーバ上に簡易なものを作成しました。

アップロードが成功すると、動画がGCS上の指定したバケット配下に配置されます。

GCS上の特定のバケット配下に動画がアップロードされると、Cloud Functionsに配置したTranscoder APIを使用するための処理がトリガーされます。

エンコード成功!

まとめ

今回は残り時間が足りず、動画のエンコードまでしか行うことができませんでしたが、GCPの学習という点では学ぶものがたくさんありました。(特にサービスアカウント周りの設定や、エンコードの設定などで苦労しました;;)
今回の合宿で得た知見が今後の機能開発に役立てていければと思います。

明日のアドベントカレンダー担当は?

明日は、iOSエンジニアの@chuymasterさんです!
お楽しみに!