MediaConvertで動画の編集(音声切り出し)に挑戦してみる
この記事では、AWSの動画変換サービスMediaConvertを使って音声ファイルの切り出しに挑戦した記録がまとめられています。MediaConvertの権限設定に注意が必要で、IAMロールの設定がポイントとなります。音声ファイル生成後はS3からのダウンロードまでスムーズに実行できました。エラーが起きた際はS3バケットのアクセス権限を確認しましょう。生成されたファイルは他のサービスと連携して活用できるため、さらなるフロー拡充を考えることができます。
目次
この記事では、AWSの動画変換サービスMediaConvertを使った音声ファイル切り出しに挑戦した時の記録をまとめています。これは「AWS(Amazon Web Services) Advent Calendar 2024」22日目の記事として公開しました。
やりたいこと
コミュニティイベントやYouTube動画の文字起こし等にチャレンジ中です。文字起こしから文章作成までは以前挑戦したのですが、動画から音声ファイルを切り出すステップでffmpegを利用した手動作業が残っていました。ここについても自動化するため、AWSのサービスを使ってみます。
MediaConvertの権限設定に注意?
あまり使わないサービスなのと、AWSアカウント自体が2017年ごろに作ったものであるためか、次の画像のようなアクセス権に関する警告が表示されていました。警告にしたがってIAMロールを設定することで解消されましたので、もし見かけた方は、指示に従うようにしてください。
警告が消えていれば、ジョブの作成などもできるはずです。
変換したい動画は、Amazon S3にアップロードする
AWSのジョブ系サービスでは定番ですね。ジョブに入力するファイルはS3へアップロードしましょう。権限設定等については割愛します。
もしファイル容量が大きい場合は、課金を避けるためにジョブが完了した後に削除するフローをStep Functionsなどで作っておくと良さそうです。
Media Convertで変換ジョブを作る
入力ファイルのアップロードが終われば、ジョブを作りましょう。ここでファイルのパスを指定しますので、事前に動画のアップロードが必要です。
作業後気づきましたら、HTTPSのURLでもいけるみたいです。もし別の場所にすでにファイルがある場合は、未検証ですがそちらを使っても良さそうです。
音声ファイルだけを作る出力グループを作成する
出力グループを使って、ファイルの制定タイプなどを設定できる様子です。今回は[出力グループ]の[追加]から[ファイルグループ]を選びました。
エンコード設定の[動画]を選び、[ビデオの削除]をクリックします。エンコード設定をオーディオのみにしておくことで、この出力グループを使うと音声ファイルのみが生成されるようになります。
動画をアップロードしてジョブを開始
出力グループの設定が終わったので、ジョブを作成しましょう。まずファイルを指定します。
S3へのアクセス権限をお忘れなく
これは初めて挑戦した時の結果ですが、エラーが出ました。
実行結果をみると、次のように説明されています。
Unable to write to output file [s3://hidetaka-lab-tmp/videos/audio/IMG_1825(1)_audio_only.mp4]: [Failed to write data: Access Denied]
Access Deniedなので、S3バケットへのアクセス権限がないですね。S3にジョブがアクセスできるようにロールを調整しましょう。
実行結果もS3に保存される
MediaConvertのジョブ実行結果は、このように表示されます。時間などが変わっていないかをみておくと良いでしょう。
あとは生成されたファイルをS3バケットからDLします。
触ってみて
思った以上に簡単な設定で実行できたので、Elemental Mediaシリーズへの苦手意識は食わず嫌いだったなぁと感じです。音声ファイルの生成ができれば、あとは前回試したTranscribeを利用するワークフローにもつなげれます。そしてS3を介するイベント駆動のフローとなりますので、あとはEventBridgeをベースとしたフローをCDKで定義するか、ステップ数は増えそうですがオーケストレーションがしやすいStepFunctionsを作るかを考えて行きたいと思います。