AWS Elemental MediaConvert を使って動画ファイルと字幕ファイルの結合をやってみた

こんにちは、大前です。最近寒くなってきましたね。

今日はタイトルにある通り、AWS Elemental MediaConvert を使用して動画と字幕ファイルの結合をやってみました。

やること

動画ファイルと字幕ファイルをそれぞれ用意し、AWS Elemental MediaConvert でジョブを作成して字幕付きの動画ファイルを作成します。

やってみた

IAM ロールの作成

AWS Elemental MediaConvert でジョブを実行するために、IAM ロールが必要となります。

ロールの作成方法については以下を参照ください。

ステップ 3: IAM アクセス許可の設定

各ファイルの準備

字幕ファイル

まずは字幕ファイル(srt)を作成します。

「字幕ファイルを作成する」と聞くと仰々しく聞こえるかもしれませんが、テキストエディタさえ使えれば作成することができます。

書き方に関する説明は省きますが、以下の字幕ファイル(sample.srt)を作成し S3 にアップロードしました。

1
00:00:05,000 --> 00:00:10,000
字幕1

2
00:00:15,000 --> 00:00:20,000
字幕2

3
00:00:30,000 --> 00:00:40,000
字幕3

内容としては以下の通りです。

  • 5秒 〜 10秒 ... 「字幕1」が表示
  • 15秒 〜 20秒 ... 「字幕2」が表示
  • 30秒 〜 40秒 ... 「字幕3」が表示

動画ファイル

動画ファイルは、ffmpeg で静止画を動画に変換した以下を使用します。

こちらも S3 にアップロードしておきます。

ジョブの作成

AWS Elemental MediaConvert の画面よりジョブ作成画面を開きます

 

入力に動画ファイルの場所を指定します。

 

入力設定を少し下にスクロールすると、「タイムコードソース」という設定項目があるので、これを下記のように設定します。

字幕ファイルの結合には直接関係ありませんが、今回はタイムコード表示も埋め込みたい為、必要となります。

 

さらに下にスクロールし、「キャプションセレクタの追加」を押下して以下の様に設定を行います。

「ソースファイル」は作成した字幕ファイルです。

 

キャプションセレクタの一つ下に「入力クリッピングの追加」とあるのでこちらを下記の様に設定します。

元動画が10分と長く、トリムするために行なっているので本筋とは関係ありません。

 

次に、出力グループの追加を押下します。

 

ファイルグループを選択。

 

カスタムグループはよしなに入力し、作成されるファイルの出力先となる S3 バケットを指定します。

 

「動画」を選択し、解像度とビットレートを適当に入力します。

 

その後、下の方にスクロールすると「タイムコードの書き込み」というオプションがあるのでこれを ON にし、フォントサイズや位置をよしなに設定します。

これは字幕ファイルの結合とは関係ありませんが、字幕ファイルで指定したタイミングで字幕が表示されているか確認するために追加しました。

 

上に戻って、「キャプションの追加」を押下します。

 

以下の様に設定します。変更したのは以下パラメータです。

「Burn In」というのが動画ファイルに字幕ファイルを結合するオプションになります。

  • キャプションソース
  • 送信先タイプ
  • フォントサイズ
  • シャドウの色
  • シャドウの不透明度
  • シャドウのオフセット(x, y)
  • 言語

 

最後に、「設定」から MediaConvert 用の IAMロールを指定します。

 

同じく「設定」より、タイムコード設定の「ソース」を変更します。

結果の確認

設定が一通り完了したら、ジョブの作成を押下します。作成と同時にジョブが実行されるので、少し待ちましょう。

出力された動画は以下になります。字幕ファイルで設定した通りに、字幕が出ていることが確認できました!

おわりに

AWS Elemental MediaConvert を使用し、動画ファイルと字幕ファイルの結合をやってみました。

キャプション周りの設定は細かいためドキュメントだけだと理解し難い部分がありますが、実際にやってみるとそこまで難しいこともない印象でした。

次は MediaLive でキャプション周りの処理に挑戦してみようと思います。

 

この記事がお役に立てば幸いです。

以上、AWS 事業本部の大前でした。

参考