目次
はじめに
以前apps-gcpでは、GCP(GoogleCloudPlatform)と連携可能なAPIとしてクラウド電話APIのtwilioを取り上げました。今回は「GCPと連携可能なAPIシリーズ」の第二弾として、「Zencoder」を紹介します。Zencoderとは、Brightcove社が提供するクラウド動画エンコーディングサービスのことで、ユーザはAPIを利用することで動画のトランスコードやライブ配信を簡易におこなえるようになります。また、課金方法が競合他社とは異なり、動画の容量ではなく、動画の尺(出力動画の分数)で使用料が決まります。さらにBrightcove社は、ZencoderがAWSが提供する動画トランスコードサービスであるAmazon Elastic Transcoderの平均14倍のパフォーマンスが出たとアピールしています。Zencoderは動画トランスコードサービスにおいて現在最も注目されているサービスと言えるかと思います。
本記事では、ZencoderとGCPの連携手順や動画のトランスコード方法について説明します。
GCPとZencoderの連携イメージ
GCPとZencoderの連携イメージは下図のとおりです。Zencoderが動画ファイルを参照する先はGoogle Cloud Storage(以下GCS)となります(※1)。ZencoderはGCSのCredential情報を得ることで、動画の入力やトランスコード後の動画の出力をGCS上でおこないます。処理を実行するためのAPIの呼び出しは、GoogleAppEngineやGoogleComputeEngine(以下GCE)からおこなうことが可能です(※2)。
※1 GCEインスタンス上の動画ファイルへの参照も可能なようですが、本記事ではGCSとの連携方法について説明をおこないます。
※2 本記事の後半で、実際にGCE上からLinuxのcurlコマンドで動画のトランスコード処理をしてみます。
GCPとZencoderの連携手順
GCPとZencoderとの連携手順について説明します。設定は以下の3ステップで完了します。無料かつ10分程度で終わる内容なので、ぜひ実際におこなってみてください。それでは、順を追って説明します(※3)。
※3 以下の手順はGoogle Developers Console上で既にプロジェクトが作成済みで、且つGoogle Cloud Storage(以下GCS)が利用可能な状態であることを前提とします。
1.Zencoderアカウントの取得(無料でアカウント作成可能)
2.GCSのCredentialキー生成
3.GCSのCredentailキー登録(Zencoderアカウントページから登録)
Zencoderアカウントの取得
(1)Zencoderのサイトにアクセスし、[サインアップ]ボタンを押下します。
http://zencoder.com/ja/

GCSのCredentialキー生成
(1) Google Developers Consoleから指定のプロジェクトを選択し、プロジェクト管理画面の左メニューから[STORAGE]-[CLOUS STORAGE]-[Project dashboard]を選択します。
– Google Developer Console
https://console.developers.google.com/project

GCSのCredentailキー登録
(1)Zencoderのユーザサイトにログインします。
(2)メニューから[Account]-[CREDENTIALS]を選択し、[Google Cloud Storage]リンクをクリックします。

GCEからZencoder APIの実行
ここまでの設定が完了すれば、Zencoder APIからGCS上の動画のトランスコードが可能となります。では、実際にGCE(Google Compute Engine)上のOSインスタンス(※4)から動画のトランスコード処理をおこなってみましょう。
※4 検証環境はUbuntu12.10です。
(1)変換対象の動画ファイル(text.mov)をGCS上のアップロードします。ターミナル上で以下のコマンドを実行し、ファイルのアップロードをおこないます。
– ファイルアップロードコマンド(※5)
$ gsutil mv test.mov gs://yoshidumi-apps-gcp |
※5 gsutilはGCS操作用コマンドラインツール群です。Google Cloud SDKをインストールすることで利用可能です。
(2)ファイルのアップロードが完了すると、Google Developers Console上からアップロードされたファイルが確認できるようになります。

-インスタンス作成コマンド
$ gcutil addinstance test |
-SSHコマンド
$ gcutil ssh test |
(5)GCEインスタンスへのログインが成功したら、いよいよZencoder APIの実行となります。APIの実行にはcurlコマンドを利用します。
(5-1)以下のコマンドはmovファイルをmp4にトランスコードするためのサンプルです。headerにはZencoderのAPIキーを指定し、dataにはJSON、またはXML形式(本サンプルではJSONを利用)で記述されたリクエストデータを指定します。inputパラメータにはトランスコード対象のファイルパス、outputには出力先の動画ファイルのメタ情報を指定します。
-API実行コマンド
$ curl –header “Zencoder-Api-Key: 96085c386fcf0fc6a90ea769af33d9b1” \ –data ‘{“test”: true,”input”:”gcs://yoshidumi-apps-gcp/test.mov”, “region”: “us-central-gce”,”output”: [{“base_url”: “gcs://yoshidumi-apps-gcp/”,”filename”: “output.mp4”}]}’ \ https://app.zencoder.com/api/v2/jobs |
(5-2)各パラメータについての説明は以下の通りです(※6)。
・Zencoder-API-Key (3)で生成したZencoder Access Keyを指定します。 ・region 実行先のRegionを指定します。 ・base_url 出力先のGCSのベースURLを指定します(※7)。 ・filename 出力後のファイル名を指定します。 |
※6 その他のパラメータの詳細については以下をご確認ください。
https://app.zencoder.com/docs/api
※7 gsutilの場合は「gs://バケット名」でストレージのパスを指定しますが、Zencoder APIの場合は「gcs://バケット名」でストレージのパスを指定します。
(6)API実行が成功すると、GCS上にトランスコードされた出力ファイルが生成されます。(下図参照)
まとめ
Zencoderアカウントは誰でも簡単に取得することができ、テスト用のAPIを無料で実行することも可能です(ただし、出力ファイルは5分間に強制的に短縮されます)。料金も利用した分だけ支払えばよい従量課金制(1分単位)なので、手軽に始めることができます。また、Zencoderは単純な動画変換だけではなく、ライブトランスコーディングにも対応しています。つまり、PC・Android・iPhone・タブレット等の様々な端末から撮影した動画をZencoderのAPI経由でライブ配信することもできます。Zencoderはテレビ局等のコンテンツ配信事業者だけでなく、コンテンツ配信をおこないたい全ての業界・個人にとって、大きな可能性を持ったサービスであると言えるかもしれません。
ぜひ一度GCP×Zencoderで動画トランスコーディングの世界を体験してみては如何でしょうか。
※ 本記事ではcurlコマンドを利用したZencoder APIの実行方法を説明しましたが、Brightcove社はJAVA、Python,PHP等の主要言語に対応したZencoderライブラリも提供しています。必要に応じて、これらのライブラリを利用することをお勧めします。各言語のライブラリは以下のリンクからダウンロードが可能です。
https://app.zencoder.com/docs/faq/basics/libraries