Amazon Elastic Transcoderでサムネイル画像を作成してみた

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

はじめに

清水です。Amazon Elastic Transcoderではトランスコード時にサムネイル画像も出力することができます。今回はこの機能を触ってみたのでまとめたいと思います。

特別な設定をしないでサムネイル画像を出力してみる

まず基本的な使い方として、特段設定をせずに(=既存のSystem presetを使用して)サムネイル画像の出力をしてみたいと思います。

Elastic Transcoderのジョブ作成時に指定するPresetですが、System Presetで準備されているもののうちすべてを確認したわけではありませんが、Video変換が含まれているものにはサムネイル画像出力設定についても含まれているようでした。 今回はサムネイル画像出力設定が確認できたものの1つである「System preset: Generic 1080p」のプリセットを使用してみます。入力動画はBig Buck BUNNY *1を使用します。

ジョブの作成の際のOutput Details、Create Thumbnails の項目で Yes を選択します。 すると

  • Thumbnail Filename Pattern
  • Thumbnail Filename Preview
  • Thumbnail Encryption Parameters

3つの項目が出現しますので、これらでサムネイル出力の設定をします。

ETT-003

Thumbnail Filename Patternにはサムネイル画像ファイルの命名規則を入力します。{count}で00001から始まる5桁の数字が連番としてファイル名に付与されます。また{resolution}で変換後の動画の解像度の情報をサムネイル画像ファイル名に付与することもできます。出力先に別途ディレクトリを作成して、画像ファイルをまとめるのもよいかと思います。 今回はthumbnails/bbb-thumbnail1-{count}-{resolution}としました。

Thumbnail Filename Previewの欄にはサンプルのファイル名が表示されるので確認しておきましょう。 3番目のThumbnail Encryption Parametersは暗号化を行う際に設定する項目なので、今回はNoneのままにしておきました。

ジョブを作成し、完了したらS3に出力されているサムネイル画像を確認してみましょう。変換した動画ファイルの尺にもよりますが、いくつかのファイルがS3に出力されているかと思います。また画像のサイズはファイル名からも確認できるように「192x108」となっていました。

以下に実際に出力されたサムネイルファイル画像9枚のうち、2,3,4枚目を掲載してみます。

ファイル名 サムネイル画像
bbb-thumbnail1-00002-192x108.png bbb-thumbnail1-00002-192x108
bbb-thumbnail1-00003-192x108.png bbb-thumbnail1-00003-192x108
bbb-thumbnail1-00004-192x108.png bbb-thumbnail1-00004-192x108

System presetのサムネイル設定項目を確認

今使用したSystem preset「System preset: Generic 1080p」のサムネイル設定の項目を確認してみると、以下のようになっていました。

ETT-005

  • サムネイル画像の作成間隔は60秒
  • 最大で192x144のサイズのサムネイル画像
    • 実際はSizing PolicyのShiringToFitの設定により192x108のサイズ

他のSystem presetもざっくり確認してみたところ、例えばWeb配信用のHLSやMPEG-DashのSystem presetでは192x108のような小さな画像となり、対して動画編集用に準備されているであろう「Full HD 1080i60 - XDCAM422」のようなプリセットでは1920x1080という高解像度での出力となっていました。また出力の間隔については60秒のものや300秒のものもありました。

出力するサムネイル画像をカスタマイズする

続いてこのサムネイル出力の設定をカスタマイズしてみましょう。プリセットの設定項目にあるので、 既存のSystem presetをコピーして新規のプリセットとして作成すれば変更ができます。

[Create New Preset]からStart With Presetの項目で、コピー元としたいプリセットを選択します。NameやDescriptionの項目も適切に設定しましょう。

ETT-006

そして画面一番下、[Create Preset]ボタンの直前にあるThumbnailの設定項目を変更します。今回は以下としました。

ETT-004

  • フォーマットはpng形式(他にjpgも選択可能)
  • サムネイル画像の出力間隔は1秒 *2
  • サムネイル画像サイズは最大で1920x1080

[Create Preset]でプリセットを作成し、このプリセットを指定したジョブを作成してみます。トランスコード後、実際に出力されたサムネイル画像は以下になります。(先ほど例示したbbb-thumbnail1-00002-192x108.pngと3枚目が同じポイントになるように選んだ連続した3枚の画像です。また掲載時のファイルサイズの都合上、png画像をjpg画像に変換しています。)

設定どおり1920x1080で1秒間隔のサムネイル画像が出力できました。

ファイル名 サムネイル画像
bbb-thumbnail2-00059-1920x1080.png bbb-thumbnail2-00059-1920x1080
bbb-thumbnail2-00060-1920x1080.png bbb-thumbnail2-00060-1920x1080
bbb-thumbnail2-00061-1920x1080.png bbb-thumbnail2-00061-1920x1080

まとめ

Amazon Elastic Transcoderでトランスコード時にサムネイル画像の出力をしてみました。デフォルト設定であるSystem presetの場合、出力されるサムネイル画像の枚数は少なく(=サムネイル画像間の間隔が大きく)、またサムネイル画像も低解像度のものとなりますが、System presetを元にして新たにプリセットを作成、その際にサムネイル画像の設定をカスタマイズすれば、出力間隔の調整や、動画と同等のサイズのサムネイル画像が生成できます。

個人的にはこのサムネイル画像生成機能について、サムネイルの間隔が割りと大きい、サイズも小さい、という先入観があったのですが、実際に設定してみることで、1秒間隔のサムネイル出力が可能なこと、また高画質でのサムネイル画像が得られることがわかりました。(デフォルト設定だけしかみていなかったんでしょうね、、。)

これだけ詳細なサムネイル画像が出力できれば、動画から抽出した画像から何か情報を得る、というようなことができるのではないか、と考えたしだいです。この可能性についても追って調査してみたいと思います。

脚注

  1. Big Buck Bunny
    Copyright (C) 2008 Blender Foundation | peach.blender.org
    Some Rights Reserved. Creative Commons Attribution 3.0 license.
    http://www.bigbuckbunny.org/
  2. ドキュメントには「サムネイル間のおよその秒数。整数値を指定します。1 つのサムネイルから次のサムネイルまでの実際の間隔は数秒異なる場合があります。」という記述があり、厳密な間隔でのサムネイル画像の生成は保証していない点に注意しましょう。