Amazon Elastic Transcoderを使ってre:Playで撮影した動画の向きを直してみよう #reinvent
はじめに
清水です。re:Invent2016が終わって少し経ち、撮影した写真や動画を整理している方も多いかと思います。 例えば今年も大盛り上がりだったre:Playでテンションが上りすぎて、手持ちのスマホで動画を撮影しておいたら、向き(タテ・ヨコ)が違っていた! なんてことになった方もいるのではないでしょうか。。(弊社せーのはそうでした) せっかくの思い出がこんな風に、首を曲げないと正しく見ることができません。。
こんな場合、例えばMac OSの「写真」や「プレビュー」などで向きの変更ができるかな(画像ならできるし)、と思うのですが、、、できません。。 けどしかし、そんな場合もAmazon Elastic Transcoderを使えば向きを修正したものをトランスコードして出力できます。ということでやってみました! (なおMac OS上でも向きを変更する方法がエントリ執筆後にわかりました。オチとして最後にまとめてありますのでページをスクロールしてご確認ください)
S3バケットの作成とファイルのアップロード
Elastic Transcoderへの入出力はS3から行う必要がありますので、S3バケットを作成しておきます。(既存のS3バケットも使用可能です)
S3のManamgement Consoleから[バケットを作成]を選択し、バケット名とリージョンを指定します。そして[作成]!
作成後、入力ファイル、出力ファイルがわかりやすいように「input」、 「output」のフォルダをそれぞれ作成しておきます。 そしてInputフォルダに変換したいファイルをアップロードしておきます。
パイプラインの作成
Elastic Transcoderを使うには、まずはパイプラインを作成します。 Management ConsoleのアプリケーションサービスからElastic Transcoderを選択 しましょう。
使用リージョンでパイプラインがない場合、下記の画面のようにElastic Transcoder のWelcome画面が表示されます。[Create a new Pipeline]を押して進みます。
Create New Pipelineの画面で下記の通り設定します。
- Pipline Name: 任意の名前を入力してください
- Input Bucket: 選択するとS3バケットの選択ができます。入力用S3バケットを選択してください。出力バケットと同一でもかまいません。先ほどの「S3バケットの作成」で作成したS3バケット名を選択しましょう。
- IAM Role: デフォルトのElatic_Transcoder_Default_Roleでかまいません
- Configuration for Amazon S3 Bucket for Transcoded Files and Playlists
- Bucket: 選択するとS3バケットの選択ができます。出力用S3バケットを選択してください。入力バケットと同一でもかまいません。先ほどの「S3バケットの作成」で作成したS3バケット名を選択しましょう。
- Storage Class: Standardを選択します
- Configuration for Amazon S3 Bucket for Thumbnails
- Bucket: サムネイルの出力バケットです。こちらも選択するとS3バケットの選択ができます。S3バケットを選択してください。出力バケットと同一でかまいません。先ほどの「S3バケットの作成」で作成したS3バケット名を選択しましょう。
- Storage Class: Standardを選択します
以上の設定をおこなったら、その他の項目はそのままで、[Create Pipeline]を押しましょう!
ジョブの作成
続いてジョブを作成します。パイプラインを作成した状態から パイプラインの一覧画面に遷移していると思われるので、左側の「Jobs」 を選択します。
ジョブの画面に遷移したら、続いて[Create New Job]を押します。
ジョブ作成画面では、以下の項目について入力または選択します。 他の項目についてはデフォルトでかまいません。
- Pipeline: 先ほど「パイプラインの作成」で作成したパイプラインを選択します。
- Output Key Prefix: 選択するとS3バケット内のフォルダが表示されます。出力用フォルダ「output/」を選択します。
- Input Details (1 of 1)
- Input Key: 選択するとS3バケット内のファイルが選択できます。アップロードした向きを修正したいファイルを選択します。
- Output Details (1 of 1)
- Preset: ここでトランスコード後の画質や出力形式が決まります。今回のようなスマホで撮影した動画の向きを変える、配信を行うわけではなくスマホやPCで再生する、というユースケースでは、「System preset: Generic 1080p」または「System preset: Generic 720p」を選択すればOKです。1080pか720pかは変換する元動画のサイズで判断しましょう。
- Output Key: 出力後のファイル名を入力します。今回は入力ファイル名の後に_rotateをつけました。拡張子はPresetに合わせて.mp4とする必要があります。
- Output Rotation (Clockwise): この項目がトランスコード後の動画の向きを変える(回転させる)パラメータになります。今回は時計回りに90度回転させる、となりますので「90 dgrees」を選択します。
以上を選択して、右下の[Create New Job]を押します。
ジョブの進捗状況の確認
ジョブを作成したらジョブの進捗状況を確認しながら、変換の完了を待ちましょう。ジョブを生成した直後はJobの詳細画面に遷移していると思います。ここからJobsを押して、ジョブ検索のトップ画面に遷移します。
ジョブ検索画面でPipeline IDで先ほど作成したパイプラインを選択し、上部の[Search]ボタンをクリックします。
作成したジョブが表示されます。Status欄が「Processing」の状態は変換中です。しばらくするとStatusが「Complete」に変わります。(変換時間は動画の尺などに影響されます)これで変換完了です。
修正完了!
Elastic Transcoderによる変換が完了すると、パイプライン作成時に指定したS3バケットに変換後の動画が格納されています。S3からダウンロードして向きが修正されているか確認しましょう。
きちんと向きが修正されました!
まとめと「オチ」
Amazon Elastic Transcoderを使ってタテ・ヨコの向きがずれてしまった動画を正しい向きに修正する方法をまとめてみました。
そして、まとめてみた後に気がついたのですが、Mac OSだとQuickTime Playerでメニューの「編集」から「時計回りに回転」させて書き出すことで同様の修正が行えることがわかりました。。。
Windows環境などでQuickTimeが使えなくて動画の向きの修正ができない人や、 大量の動画の向きを変えたい人が、これをきっかけにAmazon Elastic Transcoderを触ってくれたら本望です。