[UPDATE] AWS Elemental MediaConvertでフレームごとのメトリックレポートがサポートされました!
はじめに
清水です。ブロードキャストグレードの機能を備えたファイルベースの動画変換サービスであるAWS Elemental MediaConverで、変換後の動画の詳細な品質分析レポートを提供する機能がサポートされました。Per-frame metric reportsと称されるこの機能、MediaConvert User GuideのDocument historyによると2025/05/05付けで更新があったようです。
API更新のチェックに便利なサイトAPI Changesでも確認してみましょう。2025/05/05付けでMediaConvertのAPIに更新があったことがわかります。3つの更新のうち optional sidecar per-frame video quality metrics report
が今回のアップデートに該当するものですね。
本エントリではこのMediaConvertのPer-frame metrics reportsについて、実際に動画変換を行いレポート出力を確認してみたのでまとめてみたいと思います。
MediaConvertのPer-frame metric reportについて
まずはUser GuideからこのPer-frame metric reports機能の概要を確認してみましょう。Document historyから該当ページ、Per-frame metric reports in AWS Elemental MediaConverに遷移してみます。冒頭にこの機能Per-frame metric reportsの概念図が掲載されていますね。
引用元: Per-frame metric reports in AWS Elemental MediaConvert - MediaConvert
AWSでmetricを扱うというとCloudWatchと連携するパターンが多いかなと思います。てっきりmetric reportがCloudWatchのメトリクスの1種として出力されるのかな、と思ったのですがそうではなく、本機能は変換後の動画とともに出力先となるS3バケットにCSVファイルとしてレポートが出力されるようです。
出力されるmetric typeについては以下の6種ということです。
- PSNR (Peak Signal-to-Noise Ratio)
- エンコード後のノイズ量。値が高いほど品質が良い。単位はデシベル(dB)
- PSNR HVS (Peak Signal-to-Noise Ratio, Human Visual System)
- 人間の視覚特性を考慮したPSNRのバリエーション。値が高いほど画質が良い。単位はデシベル(dB)
- SSIM (Structural Similarity Index Measure)
- 輝度、コントラスト、構造といった構造情報を測定。値の範囲は0から1で、1は完全な類似性を示す
- MS SSIM (Multi-Scale Structural Similarity Index Measure)
- SSIMの拡張版で、複数の解像度で画質を評価。値の範囲は0から1で、1は完全な類似性を示す
- VMAF (Video Multi-Method Assessment Fusion)
- 人間の視聴者データに基づいてトレーニングされた機械学習ベースの指標。ストリーミング動画の品質に対する視聴者の満足度を示す優れた指標となる。値の範囲は0~100で、値が高いほど品質が良いことを示す
- QVBR (Quality-Defined Variable Bitrate)
- 個々のフレームのQVBR品質レベルを表す。値の範囲は1~10で、値が高いほど品質が高い。出力設定にQVBRレート制御モードが含まれている場合にのみ使用可能
これらmetricの分析方法についても、User GuideのMetric analysis techniquesのページに記載があります。例えばVMAFの指標については、90以上であればExcellent(プレミアムストリーミング)、70-90であればGood(通常のストリーミング)、50-70ならFair、50以下であればPoorというように、数値に対する具体的な評価が確認できます。
実際のレポートには、フレームごとにこれらmetricの分析結果が数値として出力されます。またレポートの最後に、全フレームの平均、最小値、最大値を示す統計データも記載されるということです。統計データとして全体を把握しながら、フレームごとに解析結果が出力されるため、具体的にどの箇所に品質低下が生じているか、といったことも確認できますね。
Per-frame metric reportsを出力してみた
Per-frame metricsの設定箇所を確認
それでは実際にMediaConvertのPer-frame metric reportsを出力してみます。設定方法はシンプルで、Jobを作成する際にOutput groupまたはoutputごとにPer-frame metricsの項目を有効にするというぐあいです。この際に、どのmetric typeを出力するか、metricを1つ以上選択する、というかたちになります。
実際にマネジメントコンソールで設定する例を確認してみましょう。今回はFile groupのOutput groupを追加して確認してみました。Output groupの設定画面、出力先などの設定の下に Per-frame metrics の項目がありますね。
チェックボックスをONにして有効にすると、Select metric typesとしてレポート出力するmetricが選択できます。
以下はVMAFとQVBRを選んでみた例です。
Outputごとに出力の指定も可能です。Encoding settingsにPre-frame metricsの項目がありますね。Output groupsと同様にチェックボックスをONにして、出力するmetricを選択します。
また当然ながら、AWS CLIや各種SDKなどAPI経由でもPer-frame metricsの出力を設定することができます。詳細はUser Guideの下記項目をご確認ください。
- Generating per-frame metric reports - MediaConvert https://docs.aws.amazon.com/mediaconvert/latest/ug/per-frame-metrics-enable.html
出力されたPer-frame metric reportsを確認
設定箇所が確認できたところで、実際にこの設定を有効にしてJobを作成し動画を変換、出力されるレポートを確認してみましょう。
入力に使用した動画ファイルについて、MediaConvert Probe APIの出力結果を示します。
{
"ProbeResults": [
{
"Container": {
"Duration": 60.915,
"Format": "quicktime",
"Tracks": [
{
"Codec": "HEVC",
"Duration": 60.915,
"Index": 1,
"TrackType": "video",
"VideoProperties": {
"BitDepth": 8,
"BitRate": 50123284,
"ColorPrimaries": "ITU_709",
"FrameRate": {
"Denominator": 443,
"Numerator": 26588
},
"Height": 2160,
"MatrixCoefficients": "ITU_709",
"TransferCharacteristics": "ITU_709",
"Width": 3840
}
},
{
"AudioProperties": {
"BitDepth": 16,
"BitRate": 94094,
"Channels": 1,
"FrameRate": {
"Denominator": 256,
"Numerator": 11025
},
"LanguageCode": "und",
"SampleRate": 44100
},
"Codec": "AAC",
"Duration": 60.913333333333334,
"Index": 2,
"TrackType": "audio"
},
{
"DataProperties": {
"LanguageCode": "und"
},
"Duration": 60.915,
"Index": 3,
"TrackType": "data"
},
{
"DataProperties": {
"LanguageCode": "und"
},
"Duration": 60.915,
"Index": 4,
"TrackType": "data"
}
]
},
"Metadata": {
"ETag": "\"088f9c157a97caac7acf88c3ca104832-23\"",
"FileSize": 382466674,
"LastModified": "2025-05-31T10:25:20+00:00",
"MimeType": "video/quicktime"
},
"TrackMappings": [
{
"AudioTrackIndexes": [
2
],
"DataTrackIndexes": [
3,
4
],
"VideoTrackIndexes": [
1
]
}
]
}
]
}
変換後の形式はFile group、MPEG-4 AVC (H.264)としました。File groupのOutput groupを追加し、出力先Destinatioを以下のように指定しました。
s3://my-s3-bucket/mediaconvert-output/per-frame-metrics/sample59-5mbps/
またOutput group単位でPre-frame metricsを有効にします。今回は選択できるすべての項目(PSNR
、SSIM
、MS_SSIM
、PSNR_HVS
、VMAF
、QVBR
)を出力してみました。
動画の出力設定では以下のように、コーデックとしてH.264/AVCを指定しました。またWidthを1920
、Heightを1080
、Rate control modeをQVBR
、Quality tuning levelをSinglepass
としています。Max bitrateでは5Mbps(5000000
bits/s)を指定しました。そのほかの項目はデフォルト設定としてJobを作成します。なお、このOutputごとの設定画面ではPre-frame metricsは有効にしていません。(Output groups側で設定してあるので、レポートが出力されるというぐあいです。)
変換後のS3バケットですが、以下のようにMP4形式の動画ファイルのほか、動画ファイル名の末尾に_VMAF
などmetric名が付与されたcsvファイルが生成されます。これらが実際のレポートファイルというわけですね。
Jobが完了したら、実際にmetric reportsの中身を確認してみましょう。まずはVMAFメトリックのレポートsample59_VMAF.csv
をチェックしてみました。User Guide記載の通り、Display_ID,Value
の形式でフレーム番号とそのフレームに対する解析されたmetric値が続きます。そして、最後にAverage、Min、Maxの統計情報が記載されています。ここだけカンマ区切りの形式となっていない点には注意しましょう。
0,66.02
1,65.86
2,63.08
3,62.07
4,62.42
5,63.80
6,61.79
7,61.48
8,62.08
9,61.89
10,60.55
<中略>
3646,66.43
3647,66.65
3648,68.68
3649,71.03
3650,66.28
3651,64.85
3652,68.32
3653,67.38
3654,67.39
Average: 70.52
Min: 58.15
Max: 88.16
Metric analysis techniquesを参照しながら、VMAFメトリックの結果を考察してみましょう。平均が70.52なのでギリギリGood、もしくはFairといったところでしょうか。最小値としては58と60を下回るぐらいなので、ストリーミングの品質として少し物足りないところがあるかもしれません。実際の映像を見ながらビットレートをもう少し上げるなど対策が必要そうですね。
続いてQVBRのレポート結果sample59_QVBR.csv
です。こちらも同様の形式で出力されています。
0,4.00
1,3.67
2,3.67
3,3.67
4,4.00
5,3.67
6,3.67
7,3.67
8,3.67
9,3.67
10,3.67
<中略>
3646,4.67
3647,4.67
3648,4.67
3649,4.67
3650,4.67
3651,4.67
3652,4.67
3653,4.67
3654,4.67
Average: 5.06
Min: 3.67
Max: 6.00
平均が5.06なのでギリギリですね。VMAFのレポートとあわせて、Encoding settingsの再検討が必要そうかな、という結果となりました。
Per-frame metric reportによる品質の比較
MediaConvertでPer-frame metricを有効にしたJobを作成、実際に出力されるPer-frame metric reporetsを確認してみました。Encoding settingsを見直したほうがよさそうかな、というような結果となりましたね。続いてはもう少し極端な例を確認してみましょう。先ほどはH.264/AVCでFull HD、ビットレート5Mbpsという設定で動画を変換しましたが、これをビットレート1Mbpsまで落としてみます。ビットレートとしては不足していそうな値で変換を行った場合にPer-frame metric reportsがどうなるか確認してみましょう。
まずはVMAFメトリックです。わかりやすいように統計情報のみ抜粋します。平均は28.61、最大値でも55.54ということで、ビットレートが5Mbpsのときの平均70.52とくらべて明らかにPoorということになりますね。
Average: 28.61
Min: 9.62
Max: 55.54
QVBRのメトリックについても統計情報を確認してみます。こちらも平均で1.58、最大値で3.33ということで、ビットレート5Mbpsのときの平均5.06よりもだいぶ値が低く、明らかにPoorであることが確認できます。
Average: 1.58
Min: 1.00
Max: 3.33
実際に変換後の動画を確認しても、Full HDでビットレート1Mbpsということでブロックノイズが目立ってしまっている映像となっていることがわかります。
まとめ
AWS Elemental MediaConverの新機能、Per-frame metric reportsについて確認してみました。変換後の動画の詳細な品質分析結果がレポートとして出力されます。統計情報のほか、フレームごとに値が出力されるので実際にどの部分で品質に問題があるのかといった確認も可能です。変換後の動画ファイルと一緒にS3バケット内にCSVファイルとして出力されるので、分析結果をデータ分析ツールなどにインポートして視覚化するといった他ツールとの連携も容易かと思います。上手に活用していきましょう。