知識マップ: Media FoundationでMP4に画像と文字を焼き込む方法

記事「Media FoundationでMP4に画像と文字を焼き込む方法」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、Media FoundationでMP4の各フレームへ画像と文字を焼き込み、新しいMP4を作る構成を整理している。処理はIMFSourceReaderでRGB32のフレームをデコードし、1ファイル完結サンプルではGDI+で画像とテキストを合成し、H.264エンコーダーがNV12などYUV系入力を前提とすることが多いためBGRAからNV12へ変換したうえで、IMFSinkWriterがH.264としてMP4へ書き出す。strideと上下向きの違いはIMF2DBuffer::Lock2Dで吸収してtop-downのBGRAへ正規化し、ReadSampleはHRESULT・flags・sampleの3点を確認する必要がある。本番では色変換をVideo Processor MFTへ寄せる、描画をDirect2D/DirectWriteへ置き換える、再利用性が必要ならcustom MFTへ切り出すといった拡張が段階的に示され、音声remuxは映像の焼き込みを先に安定させたうえで追加すべき手順として位置付けられている。

MP4への画像・文字焼き込み(Media Foundation)の知識マップIMFSourceReaderでのRGB32デコードとGDI+による合成、RGB系とNV12の変換がH.264エンコーダーへの入力として必要になること、IMFSinkWriterによるMP4書き出し、strideとtop-down/bottom-upの吸収、Direct2D/DirectWriteやVideo Processor MFT、custom MFTへの拡張、音声remuxを後段に置く進め方までの関係を示す図。利用する利用する推奨される対応前提とする利用する前提とする利用する両立しない前提とする前提とする利用する推奨される対応前提とする利用する前提とする利用する原因になり得るより先に行うべき推奨される対応前提とする動画フレームへの画像・文字の焼き込みIMFSinkWriter(Sink Writer)IMFSourceReader(Source Reader)GDI+Direct2D / DirectWritestride(画像の行送りバイト数)IMF2DBuffer::Lock2Dtop-down / bottom-up(画像の上下向き)MFVideoFormat_RGB32H.264 Video Encoder(Media Foundation)NV12ピクセル形式BGRAからNV12への色変換Video Processor MFTIMFSourceReader::ReadSampleReadSampleのnullサンプル音声のremuxcustom MFTMedia Foundation

概念間の関係(全20件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

動画フレームへの画像・文字の焼き込み
MP4動画の各フレームをデコードし、ロゴ画像やテキストを合成したうえで、新しいMP4として再エンコードして書き出す処理。
IMFSinkWriter(Sink Writer)
Media Foundationが提供する、非圧縮フレームをエンコードしてファイルへ書き出すための出力側のインターフェイス。
Direct2D / DirectWrite
D3D11/DXGI surfaceと組み合わせて使う、高速な2D描画とテキストレンダリングを行うWindowsのAPI群。
stride(画像の行送りバイト数)
画像バッファで1行分が占めるバイト数。幅×1画素のバイト数と一致するとは限らず、行末にpaddingが入ることがある。
MFVideoFormat_RGB32
Media Foundationの32bit RGBピクセル形式。byte0-2がB,G,Rで、byte3はalphaとは限らずARGB32ではない。
H.264 Video Encoder(Media Foundation)
MicrosoftがMedia Foundationに実装するH.264エンコーダーMFT。I420/IYUV/NV12/YUY2/YV12などのYUV系入力を前提にすることが多い。
BGRAからNV12への色変換
GDI+などで合成した32bit BGRAのフレームを、H.264エンコードに渡すためNV12へ変換する処理。
Video Processor MFT
色空間変換・サイズ変更・インターレース解除・フレームレート変換をまとめて扱えるMedia FoundationのTransform。
IMFSourceReader(Source Reader)
Media Foundationが提供する、メディアファイルからサンプルを同期的または非同期的に読み出すための入口となるインターフェイス。
IMFSourceReader::ReadSample
IMFSourceReaderからデコード済みのサンプルを1枚ずつ取得するメソッド。成功していてもサンプルがnullのことがある。
custom MFT
IMFTransformを自分で実装し、Media Foundationのtopologyへ部品として差し込めるようにしたエフェクト。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。