Amazon Elastic Transcoderのウォーターマーク機能を使ってみた

eyecatch_transcoder

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。前職では動画配信サービスでのAWSインフラ構築などを行っていました。 さて動画といえば!AWSにはAmazon Elastic Transcoderという動画変換をフルマネージドしてくれるサービスがあります!

Amazon Elastic Transcoder メディア変換サービス来た!
Amazon Elastic Transcoderがオーディオ変換に対応しました!
[新機能]Amazon Elastic TranscoderでアニメーションGIFを作ってみた

動画配信インフラを構築していたといいながら、実はAmazon Elastic Transcoderはサービスリリース時にちょっと触れてみたことしかありませんでした。今回、久しぶりに触りながら機能などを確認してみました。サービスリリース時からいろいろとアップデートされており、例えば以下の機能が追加されていました。

  • 入出力ファイルの暗号化(AWS Key Management Serviceと連携)
  • キャプション(字幕)機能
  • PlayReady DRMサポート
  • Smooth Streaming対応

そんな機能を確認している中、「ウォーターマーク」という項目が目に止まりましたので、使ってみました!

ウォーターマークとは

ウォーターマークというのは、例えばテレビ放送などで右上などにうっすら表示されている各テレビ局さんロゴマークの「透かし」ですね。(Wikipedia: ウォーターマーク

著作権保護の観点から入れることが多く、例えばWeb等で公開するコンテンツでは必須となる場合もあるのではないでしょうか?Amazon Elastic Transcoderでは変換の際に最大4つまでウォーターマークを入れることができます。

実際に使ってみる

このウォーターマーク機能を実際に使ってみました。概要としては以下のようになります。

AET-201511-10-3

変換前の動画はiPhoneで撮影した動画で、解像度・ビットレート等を変換し、更にモノトーンにしたクラスメソッドロゴをウォーターマークとして右上につけてみたいと思います。このウォーターマークとして使用するロゴですが、png形式の画像で背景(ロゴ以外の部分)を透明にしておくと良い感じに透過されたウォーターマークとなります。

CM_Watermark_logo

Amazon Elasitc Transcoderを使用するにはまずパイプラインを作成して、入力用S3バケット、出力用S3バケットなどを指定します。こちらの詳細は冒頭で紹介しました過去記事をご参照ください。また必要なファイル(変換前の動画、ウォーターマーク用の画像ファイル)をS3にアップロードしておきます。なお、ウォーターマーク用の画像ファイルは変換前の動画ファイルと同じ、入力用のS3バケットにアップロードしておく必要があります。

1. プリセットの設定

Amazon Elastic Transcoderには構成要素として変換後のフォーマット等を指定する「プリセット」がありますが、ウォーターマークについても、挿入する場所、大きさ、透明度などをこのプリセットで指定する必要があります。

事前に設定されているプリセット(System preset)には既にウォーターマーク設定がしてあるので、これを使うこともできます。今回は大きさ、場所、透明度などをカスタマイズしたいので、新たにプリセットから作成してみます。

Management ConsoleからPresetsを選択して、[Create New Preset]ボタンを押します。

AET-201511-01

元になるプリセットを選択して、新しく作るプリセットの名前、説明を入力します。また出力形式も選択します。 今回は"Generic 720p"のプリセットを選択して、出力形式はmp4としました。 (ウォーターマーク機能の確認が目的なので、変換後のフォーマットはPCで再生できるもので選定しています。)

AET-201511-02a

Available Settings以降はデフォルトにして、Watermarksの項目に進みます。 Watermarksの項目で、既に4つのWatermark IDが設定されていました。今回はイチから作成してみたいと思いますので、一度すべて[- Remove]を押して削除したあと、[+ Add Watermark]で項目を追加、設定していきます。(Watermark Idの設定はプリセットあたり4つまでしか設定できないので、Removeする前にAdd Watermarkはできません。)

AET-201511-07

Watermark Idは識別用にわかりやすい名称を入力します。今回は"WatermarkTEST"としました。Max Width, Max Heightで挿入するウォーターマークの最大幅・高さを入力します。ここでは割りと大きめに、変換後のサイズの3割としました。Sizing PolicyをFitとすることで、アスペクト比を維持しながらウォーターマークを拡大・縮小してくれます。
Horizontal Align, Horizontal Offset, Vertical Align, Vertical Offsetのそれぞれで、水平・垂直位置、並びにそれぞれの端からの位置を指定します。今回は右上で3%の空白を取るようにしました。
Opacityでは不透明度を設定することができます。100なら完全に不透明で指定したウォーターマーク画像がそのまま表示されます。0なら完全に透明となります。今回はある程度透明にしたいと思い、50を指定しました。

AET-201511-03-2

Watermarksの設定をしたらそのまま画面最下部までスクロールして、[Create Preset]を押してプリセットを作成します。

2. ジョブの作成と実行

続いてAmazon Elastic Transcoderで実際にトランスコーディング処理を実行する「ジョブ」を作成します。

Management ConsoleからJobs を選択して [Create New Job]から新規ジョブを作成します。

AET-201511-05

パイプライン、入力ファイル、出力Prefix、プリセット、出力ファイル名を選択または入力します。プリセットでは先ほど作成したプリセットを選択します。 AET-201511-08

ウォーターマークの設定を行います。Preset Watermark Idで先ほど作成したWatermark Id(ここでは"WatermarkTEST")を選択します。選択後に設定項目が表れますのでInput Keyにウォーターマーク用の画像を選択します。

AET-201511-09-2

そして[Create New Job]を押してジョブを作成します。ジョブは作成後に自動的に開始され、変換作業(トランスコード)が始まります。

3. 完成!

ジョブ作成後しばらくしてStatusがCompleteになればトランスコード完了です。(完了までの時間は変換する元の動画の長さ等が影響します)

こんな感じでウォーターマークを付けることができました!(画像は動画をキャプチャしたものです。またピンク色の解説部分は説明用に画像編集ソフトでつけたものです。)

AET-201511-Output_SktichComment2

今回はわかりやすいようにわざと大きめのウォーターマークにしていますが、サイズなどを調整すればよりそれっぽくなりますね!

まとめ

久しぶりに触ってみたAmazon Elastic Transcoderで注目した機能「ウォーターマークの追加」を試してみてみました。

機能としてはシンプルですが、とても実用的な機能だと思います。Amazon Elastic Transcoderでは他にも実用的な機能が追加されており、他のAWSサービスと組み合わせることで、動画の変換から公開、アーカイブまで一連のメディアワークフローがAWS上のマネージドサービス中心に構築できるのではないでしょうか。

ただシステムとして構築するには、Management ConsoleでなくAWS SDKやCLI等によるプログラマブルな操作や他AWSマネージドサービス(LambdaやSNS)との連携などで自動化することが必要になります。 これらについても追って検証していきたいと思います!