*

GCP×Zencoderで始める動画トランスコーディング

公開日: : 投稿者: GCE, GCP

はじめに

以前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コマンドで動画のトランスコード処理をしてみます。

zencoder図

図1. GCPとZencoderの連携

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/

image01

図2. Zencoderトップ画面
(2)アカウント情報を入力し、「CREATE MY ACCOUNT」ボタンを押下します。
image09

図3. アカウント入力画面
(3)登録したEmailアドレス宛に完了メールが送信されれば、Zencoderアカウント作成は完了です。

GCSのCredentialキー生成

(1) Google Developers Consoleから指定のプロジェクトを選択し、プロジェクト管理画面の左メニューから[STORAGE]-[CLOUS STORAGE]-[Project dashboard]を選択します。

– Google Developer Console
https://console.developers.google.com/project
image05

図4. Google Developers Console
(2)左メニューから[Google Cloud Storage]-[Interoperable Access]を選択し、「Generate new key」ボタンを押下します。

image07

図5. Google APIs Console
(3)キーが生成されたら、「Access Key」と「Secret」をメモしてください。
image10

図6. Storage Access Keyの生成

GCSのCredentailキー登録

(1)Zencoderのユーザサイトにログインします。

(2)メニューから[Account]-[CREDENTIALS]を選択し、[Google Cloud Storage]リンクをクリックします。
image02

図7. Zencoderアカウント画面
(3)生成したGCSのCredential情報を入力し、「SAVE CREDENTIALS」ボタンを押下します。

image06

図8. GCS Credentialの設定
(4)保存が完了すると、登録された情報がCredentialsの一覧に表示されます。
image04

図9. Credentials一覧

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上からアップロードされたファイルが確認できるようになります。
image03

図10. GCSバケット
(3)次にZencoderのユーザページにログインし、[API]-[OVERVIEW]からZencoderのAccess API Keyを取得します。このキーはアカウント作成時点で作成されます。
image11

図11. ZencoderのAccess API Key
(4)GCEインスタンスを作成し、SSH接続をおこないます。

-インスタンス作成コマンド

$ 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上にトランスコードされた出力ファイルが生成されます。(下図参照)
image08

図12. API実行後の出力ファイル

まとめ

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

この記事を書いた人

tomorier
tomorier
普段はGCP専門のエンジニアをやっています。
最近は個人的な活動としてGOとswiftでアプリ作ってます。

関連記事

2015/10/16 GCE vs AWS ベンチマーク

2015/10/16 GCE vs AWS ベンチマーク 本シリーズでは定期的に

記事を読む

GCEにPuttyから簡単接続する

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまた

記事を読む

2016年 GCE vs AWS:何故Amazonを絶対使ってはイケナイのか!

本文章は以下の記事の超訳(著者の許可を得て)に一部私のコメントを付加したものになります。 GC

記事を読む

GCP愛を語る

RGCP(GCP好き以外お断り) 技術的な話ばかりの中のAdventCalendarですが、本

記事を読む

2016/10/03 GCE vs AWS vs Azure ベンチマーク

2016/10/03 GCE vs EC2 vs Azureベンチマーク 本シリ

記事を読む

2015/07/03 GCE vs AWS ベンチマーク

2015/07/03 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

2016/08/12 GCE vs AWS vs Azure ベンチマーク

2016/08/12 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

GCEのネットワーク性能調査(iperf3でゾーン間やEC2と比較もしてみる)

GCEとEC2の同一ゾーン間と同一リージョン別ゾーン間でのネットワーク性能(ping遅延、iperf

記事を読む

GCEのWindowsインスタンスにファイアウォール越し80番ポートでRDP接続してみた

表題のまんまですが。企業の社内からGCEを使いたいって時に、ファイアウォールで80番か443番しか外

記事を読む

2015/08/04 GCE vs AWS ベンチマーク

2015/08/04 GCE vs AWS ベンチマーク 本シリーズでは定期的に

記事を読む

PAGE TOP ↑