[NEW] 動画配信向けフルマネージドAIサービスAWS Elemental Inferenceがリリースしました!
はじめに
清水です。動画配信向けのフルマネージドなAIサービスAWS Elemental Inferenceが2026/02/24付けで発表されました。What's New at AWSに以下内容がポストされています。
ライブ動画やオンデマンド動画に対してエンコードと並行しながらAI機能を適用、AIの専門知識や選任の制作チームを必要とせずに動画を最適化し視聴者へのリーチが可能になるサービスとのことです。
AWS Blogsにもポストがあります。
- Transform live video for mobile audiences with AWS Elemental Inference | AWS News Blog
- How AWS Built a Live AI-Powered Vertical Video Capability for Fox Sports with AWS Elemental Inference | AWS for M&E Blog
本エントリでは、新サービスAWS Elemental Inferenceの概要や現段階(リリース時)の機能について確認、またその機能の1つをAWS Elemental MediaLiveと連携して実際に試してみました。
AWS Elemental Inferenceの概要とリリース時の機能を確認してみる
まずはAWS Elemental Inferenceの概要、そして現段階(リリース時)で利用できる機能について確認してみましょう。冒頭で述べたWhat's New at AWSやAWS Blogsのポストのほか、サービスページやUser Guideも準備されています。
- AWS Elemental Inference – AI-Powered Vertical Video
- What Is Elemental Inference? - Elemental Inference
User GuideによるとこのAWS Elemental Inference、機械学習モデルをビデオ、オーディオ、画像コンテンツに簡単に適用して自動分析、分析インサイト生成を可能にするリアルタイムサービスとのことです。
また現段階で利用できる機能として、(1) Vertical video creation(縦型動画作成)、(2) Clip generation with advanced metadata analysis(高度なメタデータ分析によるクリップ生成)の2つが挙げられています。
1つめの縦型動画作成については、テレビなどでよく目にする横長(16:9)の映像から、自動で縦長(9:16)の映像を作成します。縦長映像は昨今、スマートフォンで目にすることが多いですよね。この横長映像から縦長映像の作成、どこを選択するかが重要であり、また労力のかかる作業です。これをAIの力で自動化できるわけですね。
2つ目のクリップ生成については、元映像からハイライト部分を自動手的に検出・抽出して、クリップ動画としてまとめらられる機能です。具体例としてサッカーやバスケットボールの試合が挙げられています。2時間程度の試合全体からハイライトをまとめクリップ動画をまとめます。縦型動画生成と異なり時間軸を対象としますが、どこを選択するかが重要です。これまた労力のかかる作業ですが、こちらもElemental Inferenceで自動化ができるとのことです。
どちらも放送や動画配信のワークフロー内で頻出する作業か思います。これらを自動で処理できること、また基盤モデル含めてフルマネージド型で提供される点は大きいですよね。そしてリアルタイムで処理ができ、そしてAWS Elemental MediaLiveやAWS Elemental MediaConvertとの連携が可能とのことです。
Elemental InferenceのSmart Croppingを使ってみた
それでは実際にElemental Inferenceの機能の1つ、Smart Croppingを使ってみたいと思います。Vertical video creation(縦型動画作成)用の機能になります。AWS Elemental MeidaLiveと連携させて、ライブ動画配信の際にリアルタイムで縦型動画が生成できることを確認してみました。
まず基本的なライブ動画配信の構成を作成します。AWS側リソースとしてMediaLiveとMediaPackageを準備しました。OBS Studioから映像をMediaLiveに打ち上げ、MediaPackageをライブオリジンとします。本番運用ではCloudFrontなどCDNと連携させるところですが、今回は動作検証が目的ですのでCNDはなしで確認しました。ライブ動画の視聴にはVLC media playerを使用しました。この構成では通常の横長Landscapeな映像を扱います。
このライブ動画配信の構成について、MediaLiveでOutput gropu、またMediaPackageのChannelをもう1つ作成します。こちらは縦長Portraitな映像を扱います。MediaLive側では映像のWidth、Heightを9:16になるように設定します。今回はHeightを1080にあわせ、Widthを608としました。横長映像のWidth 1920からこの608を切り出します。(1312ピクセルぶん、70%近くの情報が失われます。)どこを切り出すかをElemental InferenceのSmart Cropping機能で判断します。Elemental Inferenceと、この縦長Portrait用のMediaLive Outputを連携させます。
MediaLiveのUser Guide、以下項目も参考に進めていきます。
まずはMediaPackageリソースを作成、続いてMediaLive用のIAMロールの編集を行います。続いてMediaLiveをElemental Inferenceと連携させて設定し、Smart Croppingの動作を確認してみました。
MediaPackageリソースの作成
ライブオリジンとなるMediaPackageリソースを作成します。作成手順は通常のMediaLive + MediaPackage構成と変わりありません。MediaPackage v2を利用します。OregonリージョンでChannel gropusを作成するところからはじめました。
MediaPacakgeのマネジメントコンソール、左側のメニューからLive v2のChannel groupsに進みま(Create channel group)ボタンを押下します。Channel gropu nameを適切に設定、必要に応じてDescriptionやAccess Logging設定を行い(Create)ボタンでChannel groupを作成します。


続いて2つのChannelを作成します。横長Landscape用と縦長Portrait用です。設定としてはどちらも変わらず、リソース名称だけの違いです。まずは横長Landscape用のChannelの作成を作成します。Channel group作成後のChanne group詳細画面で(Create channel)ボタンを押下しします。

ChannelのNameを適切に設定(Landscape用かPortrait用かをわかりやすいようにしました)、必要に応じてDescriptionを入力します。Input typeはCMAFを選択しました。MQCSなどの設定はデフォルトの無効のママ進めます。Channel policyについてもデフォルトDont't attach a policyのまま、(Create)ボタンを押下してChannelを作成します。

Channelリソースが作成できたら、続いてOrigin endpointを作成します。Channel作成後の詳細ページで(Create endpoint)ボタンから進みます。

Nameを適切に設定、Container typeはCMAFを選択しました。Endpoint plicyとしてAttach a public policyを選択、Manifest definitionsでHLS manifestを追加し、Manifest nameをindex、Child manifest nameをvarantと設定しました。



endpoint作成後の画面です。Manifest settingsの項目でHLS manifest definitions
のindexのURLを控えておきましょう。後ほど、再生Playerと指定使用するVLC media playerでこのURLを開きます。

続いてPortrait用のChannelも作成します。Name以外の設定項目は同じです。

作成後、同様にOrigin endpointを作成します。こちらは名称含めて同じ設定のため、スクリーンショットは省略します。

Endpointが作成できたら、Portrait用ChannelについてもHLS manifest definitionsのindexのURLを控えておきます。

以上でMediaPackageリソースの準備は完了です。
MediaLive用IAMロールの編集
MediaLiveで使用するIAMロールについて、Elemental Inference用の機能を追加します。
こちらはマネジメントコンソールなどから適宜、IAMロールのアップデートを促されることもあるのですが、今回のElemental Inference対応はまだアップデートされていないようです。
今回は手動で、Elemental Infereceに関連する機能の権限を付与しました。あくまで動作検証を目的とした対応となります。実際の運用を鑑みた場合、適切な権限を選択するようにしましょう。(そのうちにIAMロールのアップデートが入ったり、User Guideなどで適切な権限が案内されるのではと思っております。)
IAMのマネジメントコンソールを開き、左側メニューからAccess ManagementのRolesのページに進みMediaLiveAccessRoleで該当のロールを検索、詳細ページに進みます。AWS managedのAmazonSSMReadOnlyAccessポリシーと、インラインポリシーMediaLiveCustomPolicyが設定されています。Permission policiesの(Add permissions)から「Create inline policy」に進みます。
権限設定画面、今回はVisualのPolic editorを使用しました。Select a serviceでElemental Inferenceを選択します。許可するアクションとして、All Elemental Inference actions (elemental-inference:*)を選択、ResourcesもAllを選択しました。(繰り返しですが、動作検証を目的とした暫定的な処置です。)
Temporary-ElementalInferenceAllowPolicyというPolicy nameを設定して(Create policy)ボタンを押下します。
最終的に以下の内容をインラインポリシーで追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "elemental-inference:*",
"Resource": "*"
}
]
}
MediaLiveをElemental Inferenceと連携させて設定
MediaPackageリソースならびにMediaLive用IAMロールの準備ができました。それではいよいよ本アップデートの本題、Elemental Inferenceと連携させたMediaLiveリソースを作成していきます。
まずはInputリソースです。ここはElemental Inferenceとの連携は意識せずに、通常通りのInputリソースを作成します。今回はRTMP (push)のInput typeで作成しました。Input classはSINGLE_INPUTです。



Inputリソースが作成できたら、Channelリソースを作成します。Channel一覧ページから(Create Channel)ボタンで進みます。Create Channel画面、いきなり冒頭に Introducing AWS Elemental Inference の表示がありますね!

(Enalbe AWS Elemental Inferece features)のボタンを押下すると、AWS Elemental Inference settingsの項目に進みます。デフォルトでStateはDisabledですが、Enalbedにしてみましょう。 Smart cropping と Event clipping の2項目が出現します。今回動作検証を行うSmart croppingについてはOutputの設定をしてから有効にする必要があるようです。

ということで、まずはInputやOutputなどもろもろのMediaLive設定を行いましょう。今回の検証ではOutputの設定として以下のChannel template elemental-Inference-test-channel-template.json を準備しました。
elemental-Inference-test-channel-template.json
Channel templateの項目でまずはこのelemental-Inference-test-channel-template.jsonを読み込みます。その後、Channel nameを適切に設定し、先ほど編集したMediaLive用IAMロールを関連付けます。Channel classはSINGLE_PIPELINEを選択しました。

Input attachmentsで先ほど作成したInputリソースをアタッチします。

Outputのlandscape-cmaf-ingest-emp-outputに進みます。MediaPackage destinationsの項目、Destination 1で先ほど作成したLandscape用のMediaPackage channel gropuとMediapackage Channelを選択します。

Outputのportrait-cmaf-ingest-emp-outputでも同様に、MediaPackage destinationsのDestination 1で今度はPortrait用のMediaPackage channel gropuとMediapackage Channelを選択します。

ここまで設定が完了したら、再度AWS Elemental Inference settingsの項目の項目を開いてみます。
Smart croppingの項目で2つのOutput groupが表示されていますね。

Output group 2だけ有効にします。左側のリソース表示の部分、Output group 2のOutput 1に星(✧)マークがつきました。

このOutputの詳細を確認してみましょう。星(✧)マークついているVideo、Scaling Settingsの項目を展開します。Scaling Behaviorの項目がSMART_CROPに設定されています。

MediaLiveのUser Guide、Smart crop video using Elemental Inference - Setting up smart crop using the MediaLive consoleの記載内容と一緒ですね。
なお、Smart croppingを設定していないOutput gropus(横長Landscape)のほうは、このScaling Settings > Scaling BehaviorはDEFAULTに設定されています。

上記Scaling Behaviorの設定を確認し、(Create Channel)ボタンからChannelを作成します。なお、私はChannel templateから作成する際、IAMロールの設定がどこかで外れてしまってChannel作成後にIAMロールが設定されていない、という現象によく遭遇します。実は今回もこの現象に遭遇してしまったのですが……、IAMロールの設定などについても再度確認し、(Create Channel)ボタンを押下しましょう。
ということで、検証用のChannelが作成できました。

AWS Elemental Inferenceという項目が増えていますね、確認してみるとElemental Inferenceリソースが情報がまとめられています。

Elemental Inferenceのマネジメントコンソールも確認してみましょう。以下のように1つの Feed リソースが作成されていました。


Smart Croppingを確認
Elemental Inferenceと連携させたMediaLive Channelが作成できました。実際にこのMediaLive Channelに映像を打ち上げ、Elemental InferenceによってSmart Croppingされた映像を確認してみます。
MediaLiveのChannelをStartさせます。MediaLiveへの映像の打ち上げにはOBS Stuidoを利用しました。以下のようにRTMPプロトコルを使用してOBS Stuidoからの配信を開始します。

MediaLiveから出力される映像はMediaPackage経由で視聴が可能です。今回は再生PlayerとしてVLC media playerを使用しました。メニューの[ネットワークを開く]から「ソースを開く」ダイアログを表示させ、URL欄にMediaPackageリソース作成の最後で確認したHLS manifest definitionsのindexのURLを入力、[開く]ボタンを押下します。(なおVLC mediaplayerの利用は画面収録の都合だったりします。MediaPackageマネジメントコンソールから遷移できるHLS.js demoページなどからでも問題なく再生は可能です。)

しばらくするとOBS Stuidoから配信している映像が視聴できます。今回はVLC media playerを2つ立ち上げ(コマンドラインからopen -n /Applications/VLC.appを実行しました)、通常の横長映像(Landscape)と、そこからSmart Croppingした縦長映像(Portrait)を並べて視聴しました。
以下が実際の映像をキャプチャしたものです。Macで画面収録したものをYouTubeにアップロードしています。音声はありません。
左側がOBS Studioから打ち上げたもとものと横長Landscape映像、右側がElemental InferenceでSmart Croppingした縦長Portrait映像です。以下のスクリーンショットのとおり、Smart CroppingしたPortrait映像では0.6秒ほどの遅れがあります。(映像の時間表示は29.97のフレーム番号を示しており、19フレームぶんの遅れとなります。)
この遅れについて、VLC mediaplayerでの再生のタイミングによるものなのか(2つのHLSストリーミングを再生しており、同期はされない認識です)、Elemental Inferenceで発生する遅延なのかは深追いしておらずわかりません。

さて、改めてSmart Croppingの効果をYouTubeにアップロードした動画とともに確認してみましょう。USBカメラに対して任意のタイムコードを表示したスマートフォンを写し、そのスマートフォンを右へ左へと動かしています。上部の「0、50、100」の表示とそれぞれのメモリは、横軸(x軸)の目安として表示させてみました。
右側はそこからPortraitになるようのSmart Croppingで切り出した映像です。タイムコードを表示したスマートフォン(と私の右腕)に追従するかのようにPortrait切り出しの横軸(x軸)方向が変化していくことが確認できます。スマートフォン(注目すべき対象)が中央にくるようにPortraitが切り出されている感じです。
動きも非常にスムーズかつ自然な感じがします。この自然さは注目すべき点だと思いました。YouTube動画の02:17あたり、スマートフォンを非常に早く右に動かした箇所があるのですが、Portrait切り出しは常にスマートフォンを中心にする、ではなくゆっくりと切り出しの中心点を右に動かしていきます。そのため、スマートフォンがPortrait切り出しに映らない場面の発生するのですが、急激な映像の変化がなく、みているぶんいは非常に自然に写ったように感じました。まるでカメラをパンしているような印象です。

なんの設定もすることなく、このようなPortrait切り出し映像が、さらにライブストリーミングに対して実施できるのは本当にすごいですね!
なお、このSmart CroppingによるPortrait切り出しの際の横軸(x軸)方向についてはデータとしても参照できます。Elemental Inferenceのマネジメントコンソール、Feedの詳細画面でPreveiw metadataを確認してみます。以下のように時刻によってX Positionの値が変化していることが確認できますね。(縦方向のY Positionについては固定。)Elemental Inference User GuideによるとData endpointへのAPI経由でも取得ができるようなので、MediaLive連携以外にも活用の幅が広がりそうです。


まとめ
動画に対してエンコードと並行しながらAI機能を適用できる新サービスAWS Elemental Inferenceについてお届けしました。Elemental Inferenceの機能の1つSmart Cropping(縦型動画作成)について、実際にAWS Elemental MediaLiveと連携させて動作を確認してみました。横長の動画からリアルタイムで、注目するべき点を中心にした縦長の動画を切り出します。横長の動画と同様にリアルタイムでストリーミング視聴が可能です。切り出し方もとてもスムーズで、そして自然な印象でした。
MediaConvertなどほかサービスとの連携も期待できますね!またもう1つの機能であるクリップ作成についても、追って検証できればと思います。






