Amazon Web Services ブログ

Amazon Rekognition VideoでVODプラットフォームのコンテンツ準備と品質管理を効率化する

昨年、私たちはメディアのお客様が機械学習(ML)を利用して、ビデオファイル内のフレーム精度の高いエンドクレジット、ブラックフレームセグメント、ショット変更、およびカラーバーを簡単に自動検出できるAPI、Amazon Rekognition ビデオセグメント検出を発表しました。本日、新たに4種類のセグメント(オープニングクレジット、コンテンツセグメント、スレート、スタジオロゴ)への対応、クレジットやショットの検出精度の向上、黒枠検出を制御する新しいフィルターを発表します。

ビデオセグメントの検出により、オペレーションチームやメディアサプライチェーンチームはVOD(ビデオ・オン・デマンド)アプリケーションのコンテンツ準備や品質管理(QC)の作業を効率化することができます。一般的な作業としては、「次のエピソード」や「イントロをスキップ」などのマーカーの追加、サイレントブラックフレームによって示される事前に挿入された広告ブレークマーカーの検出、公開前のスレートやカラーバーなどの不要なセクションの削除などがあります。ビデオセグメント検出機能により、お客様はアセットレビューにかかる時間を数時間から数分に短縮し、手作業にかかるコストを2~5倍に削減し、大量のアーカイブコンテンツやサードパーティのコンテンツを短時間でストリーミング用に準備することができます。これにより、放送局やストリーミング・プラットフォームはオペレーターのリソースをより価値の高い作業に振り向けることができ、視聴者を飽きさせないインタラクティブなスキッププロンプトを作成したり、広告挿入ワークフローを簡素化して収益化を容易にすることができます。

主な機能

それぞれの新しいセグメントタイプについて、詳しく見ていきましょう。

オープニング・エンドクレジット: Amazon Rekognition Videoは、映画やテレビ番組のオープニングとエンディングのクレジットが始まる正確なフレームを自動的に識別するのに役立ちます。この情報によりVODアプリケーションにおいて、「ビンジマーカー」や「次のエピソード」や「イントロをスキップ」などのインタラクティブな視聴者プロンプトを生成することができます。Amazon Rekognitionは、機械学習を用いて、シンプルなローリングクレジットから、コンテンツに沿ったクレジット、シーンに沿ったクレジット、アニメコンテンツのスタイル化されたクレジットなど、さまざまなオープニングおよびエンドクレジットのスタイルに対応しています。

スレート: スレートとは通常、ビデオの冒頭にあるセクションで、エピソード、スタジオ、ビデオフォーマット、オーディオチャンネルなどのテキストメタデータを含みます。Amazon Rekognitionは、このようなスレートの開始と終了を識別することができます。これにより、オペレータはテキストメタデータをさらに分析して使用したり、ストリーミングプラットフォーム用にコンテンツを準備する際にスレートを単純に削除したりすることが容易になります。

スタジオ・ロゴ: スタジオロゴは番組制作に関わる制作スタジオのロゴやエンブレムを示すシーケンスです。Amazon Rekognitionはこのようなシーケンスを識別することができ、オペレーターがスタジオを特定するためにさらに確認することが容易になります。

コンテンツ: コンテンツとはテレビ番組や映画のうち、番組や関連要素を含む部分を指します。無音の黒枠、クレジット、カラーバー、スレート、スタジオロゴなどはコンテンツとはみなされません。Amazon Rekognitionはビデオ内の各コンテンツセグメントの開始と終了を検出することで、番組のランタイムを見つけたり、重要な番組セグメントを区切ったりするなど、複数の用途に使用することができます。例えば、動画の最初に前回のエピソードのリキャップや、エンドクレジットの後のボーナス映像のようなコンテンツです。同様にビデオによっては、最後に「テキストレス」コンテンツがある場合があります。これは、テキストがオーバーレイされているすべての番組のビデオですが、テキストだけが削除されているものです。他の言語で作成したテキストを使用し、コンテンツをローカライズすることができます。Amazon Rekognition Videoですべてのコンテンツセグメントが検出されたら、お客様は「私のビデオは通常前回のリキャップから始まる」などのドメイン固有のルールを追加適用して、さらなるレビューやフォローアップアクションが必要な主要セグメントをさらに特定することができます。

次の図はメディアサプライチェーンにおけるビデオアセットの典型的なタイムラインです。冒頭のカラーバーとオープニングクレジット、総集編や本編などのコンテンツセグメント、動画全体の広告挿入マーカーを示す黒枠、そして最後のエンドクレジットに注目してください。Amazon Rekognition Videoを使えば、これらの各セグメントを自動的に検出し、フレーム精度の高い開始と終了のタイムスタンプ、SMPTEタイムコード、またはフレーム番号を得ることができます。

 

Timeline of a typical video asset in a media supply chain, shown with common segment types

精度の向上

新しいセグメントタイプの導入に加えて、ショット検出とエンドクレジット検出の精度も向上しました。 特に、シーン上のクレジット、コンテンツと並べたクレジット、断続的なコンテンツを含む長いクレジットシーケンス、アニメの定型化されたクレジットなど、検出難易度が高かったエンドクレジットスタイルがより正確に検出されるようになりました。

使い方

ビデオセグメント検出は、分析を開始するStartSegmentDetectionと分析結果を取得するGetSegmentDetectionの2つの操作で構成される非同期APIです。 StartSegmentDetectionは、Amazon Simple Storage Service(Amazon S3)に保存されているH.264ビデオを入力パラメータとともに受けつけ、正常に完了すると一意のJobIdを返します。これはビデオ結果を取り込むためのGetSegmentDetectionで使用できます。最良の結果を得るには、コンテンツの720pまたは1080pの「プロキシ」バージョンを使用することをお勧めします。 Apple ProResやMXFなどの形式の高解像度ソースファイルがある場合は、AWS ElementalMediaConvertを使用して事前にH.264にトランスコードできます。

ブラックフレームフィルタ

今回のリリースでは、無音ブラックフレームの検出を管理するためのフィルターが追加されました。 例えば古いテープアーカイブからデジタル化されたファイルは、最新のデジタル生成ファイルとは異なる黒レベルと大きなノイズが含まれる可能性があります。 これらのさまざまなニーズに対応するために、APIリクエストで指定できるブラックフレームフィルタを提供します。 以下はStartSegmentDetectionのJSONリクエストの例です。

{
  "Video": {
    "S3Object": {
      "Bucket": "test_files",
      "Name": "test_file.mp4"
    }
    "SegmentTypes":["TECHNICAL_CUES", "SHOT"]
    "Filters": {
      "TechnicalCueFilter": {
         "MinSegmentConfidence": 90,
         "BlackFrame" : {
            "MaxPixelThreshold": 0.1,
            "MinCoveragePercentage": 95     
         }
      },
      "ShotFilter" : {
          "MinSegmentConfidence": 60
      }
  }
}  

ブラックフレームフィルタのパラメータ詳細を見ていきましょう。

MaxPixelThresholdは、黒と見なされるピクセルの最大輝度値を決定するために使用されるしきい値です。フルカラー範囲のビデオでは、輝度値の範囲は0〜255です。ピクセル値0は純粋な黒であり、最も厳密なフィルターです。

黒の最大ピクセル値は次のように計算されます:max_black_pixel_value = minimum_luminance + MaxPixelThreshold * luminance_range。例えばBlackPixelThreshold = 0.1のフルカラー範囲のビデオの場合、max_black_pixel_valueは0 + 0.1 *(255-0)= 25.5です。MaxPixelThresholdのデフォルト値は0.2で、フルカラー範囲のビデオのmax_black_pixel_value = 51にマップされます。

MinCoveragePercentageは、フレームが黒のフレームと見なされるために、max_black_pixel_value未満の輝度を持つ必要があるフレーム内のピクセルの最小パーセンテージです。輝度はBT.709マトリックスを使用して計算されます。

デフォルト値は99です。これは、MaxPixelThreshold値の設定に従って、フレーム内のすべてのピクセルの少なくとも99%が黒のピクセルである必要があることを意味します。この値を減らして黒いフレームでより多くのノイズを許容することができます。

API レスポンス

次にGetSegmentDetectionからのサンプルレスポンスを確認します。 タイムスタンプとSMPTEタイムコードに加えて、フレーム内の各セグメントの開始、終了、および期間が返されることに注目してください。

    "JobStatus": "SUCCEEDED",
    "VideoMetadata": [
        {
            "Codec": "h264",
            "DurationMillis": 478145,
            "Format": "QuickTime / MOV",
            "FrameRate": 24.0,
            "FrameHeight": 360,
            "FrameWidth": 636
        }
    ],
    "AudioMetadata": [
        {
            "Codec": "aac",
            "DurationMillis": 478214,
            "SampleRate": 44100,
            "NumberOfChannels": 2
        }
    ],
"Segments": [
        {
            "StartFrameNumber": 0,
            "EndFrameNumber": 299,
            "DurationFrames": 299,
            "StartTimestampMillis": 0,
            "EndTimestampMillis": 9976,
            "DurationMillis": 9976,
            "StartTimecodeSMPTE": "00:00:00;00",
            "EndTimecodeSMPTE": "00:00:09;29",
            "DurationSMPTE": "00:00:09;29",
            "Type": "TECHNICAL_CUE",
            "TechnicalCueSegment": {
                "Confidence": 90.45006561279297,
                "Type": "BlackFrames"
            }
        },
        {
            "StartFrameNumber": 299,
            "EndFrameNumber": 449,
            "DurationFrames": 150,
            "StartTimestampMillis": 9976,
            "EndTimestampMillis": 14981,
            "DurationMillis": 5005,
            "StartTimecodeSMPTE": "00:00:09;29",
            "EndTimecodeSMPTE": "00:00:14;29",
            "DurationSMPTE": "00:00:05;00",
            "Type": "TECHNICAL_CUE",
            "TechnicalCueSegment": {
                "Confidence": 100.0,
                "Type": "Content"
            }
        },
        {
            "StartFrameNumber": 0,
            "EndFrameNumber": 299,    
            "DurationFrames": 299,
            "StartTimestampMillis": 0,
            "EndTimestampMillis": 9976,
            "DurationMillis": 9976,
            "StartTimecodeSMPTE": "00:00:00;00",
            "EndTimecodeSMPTE": "00:00:09;29",
            "DurationSMPTE": "00:00:09;29",
            "Type": "SHOT"
            "ShotSegment": {
                "Index": 0,
                "Confidence": 99.9982681274414
            },
        },
        {
            "StartFrameNumber": 300,
            "EndFrameNumber": 449,
            "DurationFrames": 149,
            "StartTimestampMillis": 10010,
            "EndTimestampMillis": 14981,
            "DurationMillis": 4971,
            "StartTimecodeSMPTE": "00:00:10;00",
            "EndTimecodeSMPTE": "00:00:14;29",
            "DurationSMPTE": "00:00:04;29",
            "Type": "SHOT"
            "ShotSegment": {
                "Index": 1,
                "Confidence": 99.9982681274414
            },
        }
    ],

    "SelectedSegmentTypes": [
        {
            "Type": "SHOT",
            "ModelVersion": "1.0"
        },
        {
            "Type": "TECHNICAL_CUE",
            "ModelVersion": "2.0"
        }
    ]
}

はじめに

最新のAWS SDKをダウンロードすることで、ビデオセグメント検出APIの使用を開始できます。 APIとコードサンプルの詳細についてはドキュメントを参照してください。 APIの価格情報の詳細については、Amazon RekognitionVideoの価格ページを参照してください。 ビデオセグメント検出APIの価格は、テクニカルキュー検出(ブラックフレーム、クレジット、コンテンツ、スレート、スタジオロゴ)およびショット検出用に、それぞれ0.05ドル/分または3ドル/時間のビデオです。※ 2021 年 8 月執筆時点の料金体系での試算となります。

APIによって作成された結果を視覚化するのに役立つように、GitHubのオープンソースコードプロジェクトであるセグメント検出ソリューションを確認してください。 Codemill Accurate Player Validateなど、AWSパートナーによって構築されたアプリケーションを介してビデオセグメント検出APIを使用することもできます。 ここで、ソリューションがどのように機能するかを見てみましょう。

セグメント検出ソリューション

アップロード、解析、検出結果の可視化

デモソリューションではWebポータルを介して、ビデオをアップロード、解析、検出の可視化が可能です。

  1. 提供されているAWS CloudFormationテンプレートを使用してデモソリューションを作成しWebポータルにログインします
  2. ビデオファイルをドラッグアンドドロップし、解析を開始します。 次にAmazon Rekognition Segment Detection APIを実行してテクニカルキューとショットを検出し、検出結果をJSON形式で取得します。
  3. ビデオの解析が完了したら、各セグメントタイプを切り替えて、検出結果を視覚化します。 結果はビデオタイムラインにオーバーレイされます。

 

Using the Segment Detection tool to upload videos, analyze them, and visualize results

Tears of steel | (CC) Blender Foundation | mango.blender.org

 

JSONをEDLフォーマットに変換

Amazon RekognitionセグメントのJSON検出結果を取得したら、デモソリューションを利用して、次の手順でJSONファイルをEDLファイル形式に変換できます。

  1. ソリューションのWebポータルにログインした後、SimpleConvertをクリックします。
  2. JSONファイルをポータルにドラッグアンドドロップし、「Start convert」をクリックします
  3. JSONファイルが変換されたら、「Download EDL」をクリックしてEDLパッケージをダウンロードします。

Converting JSON results to EDL

EDLを編集ツールへインポートする

EDLパッケージをダウンロードして解凍すると、各EDLファイルをタイムライン要素としてNLEツールにインポートできます。

  1. DaVinci Resolveを開き、新しいプロジェクトを作成します
  2. ビデオをメディアプールにドラッグアンドドロップします
  3. 「File」> 「Import」> 「Timeline」をクリックし、EDLファイルの1つ(たとえば、「shot.edl」)を選択してインポートします
  4. インポート後すべてのショットセグメントがフレーム精度の要素としてタイムラインに表示されます。 次に、タイムラインをナビゲートして個々のセグメントを見つけ、クリップを編集できます。

次のアニメーションはAmazon Rekognitionで生成されたEDLファイルをBlackMagic Design DaVinci Resolveにインポートする方法を示しています。

Visualizing segments on a video timeline with DaVinci Resolve

JSONからEDL CMX3600フォーマットへの変換

変換がどのように機能するかさらに理解するために、EDLファイル形式とセグメント応答のJSON応答を詳しく見てみましょう。

EDL ファイル

TITLE: TEARSOFSTEEL 4K
FCM: NON-DROP FRAME

001  SHOT000  V     C     00:00:00:00 00:00:08:21 00:00:00:00 00:00:08:21
* FROM CLIP NAME: tearsofsteel_4k.mov

002  SHOT001  V     C     00:00:08:22 00:00:13:10 00:00:08:21 00:00:13:10
* FROM CLIP NAME: tearsofsteel_4k.mov

ここでは

001, Field 1 はEdit Decisionを表します
SHOT000, Field 2 はリール番号を表します
V, Field 3 はセグメントを表します。 “V”は “Video only”を意味します
C, Field 4 はアクションを表します。 “C” は “Cut”を意味します
SPACE character, Field 5は トランジションの種類を表します。このケースでは“ ” は “Cut”を意味します
00:00:00:00, Field 6はsourceのplay IN timeを表します
00:00:08:21, Field 7 はsourceのplay OUT timeを表します
00:00:00:00, Field 8 はrecordのplay IN timeを表します
00:00:08:21, Field 9 はrecordのplay OUT timeを表します

EDL CMX 3600仕様の詳細にはここでは触れませんが、EDLファイルに決定/トランジション(「カット」など)のリストと、IN時間やOUT時間などのタイミング情報が含まれていることがわかります。

EDLファイル形式への変換は、検出の開始と終了のSMPTEタイムコードをマッピングし、互換性のあるEDL CMX 3600にフォーマットすることと同じように簡単です。

Converting segment detection JSON to EDL

まとめ 

このブログでは、Amazon Rekognition Videoセグメント検出APIについて説明しました。これによりVODアプリケーションのコンテンツ準備と品質管理(QC)タスクを簡単に合理化できます。 このリリースで追加された4つの新しいセグメントタイプ(オープニングクレジット、コンテンツセグメント、スレート、スタジオロゴ)を確認しました。 また、新しいフィルターオプションを使用して、ブラックフレーム検出をさらにカスタマイズする方法も確認しました。 最後にセグメント検出ソリューションを使用してビデオファイルを簡単にテストし、JSON API応答をEDLファイルに変換して、BlackMagic Davinci ResolveやAdobe Premiere Proなどのノンリニアエディターに簡単にインポートする方法について説明しました。 Amazon Rekognition Videoセグメント検出APIの詳細については、ドキュメントを参照してください。


参考リンク

AWS Media Services
AWS Media & Entertainment Blog (日本語)
AWS Media & Entertainment Blog (英語)

AWSのメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※ 毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。

翻訳は BD山口とSA斎藤が担当しました。原文はこちらをご覧ください。