无法使用 Media Foundation h264 编码器设置自定义 SEI

Posted

技术标签:

【中文标题】无法使用 Media Foundation h264 编码器设置自定义 SEI【英文标题】:Cannot set custom SEI using Media Foundation h264 encoder 【发布时间】:2021-04-30 08:39:24 【问题描述】:

我设置了一个MFSinkWriter,它在输入中采用RGB MFMediaType,并生成一个H.264 MFMediaType 作为输出。 我需要为每个编码的MFSample 添加 SEI 信息。使用 Windows Media Foundation 应该可以使用属性 MF_MT_FORWARD_CUSTOM_SEI 输出 MFMediaType

编码时,在将MFSample 传递给MFSinkWriter 之前,我将MFSampleExtension_Encryption_SEIData 添加到一个包含我需要的自定义信息的blob 中。但是,在检查生成的文件时,SEI 字段为空。 没有关于如何使用 MF_MT_FORWARD_CUSTOM_SEIMFSampleExtension_Encryption_SEIData 的文档/示例。有什么建议吗?

【问题讨论】:

【参考方案1】:

...使用 Windows Media Foundation 应该可以这样做使用属性MF_MT_FORWARD_CUSTOM_SEI...

...没有关于如何使用MF_MT_FORWARD_CUSTOM_SEI 或 MFSampleExtension_Encryption_SEIData 的文档/示例

不,这是不可能的。特别是因为没有记录在案的行为,也没有记录在案的行为。您可以通过不使用 Sink Writer 来实现期望:如果您自己管理编码器并且您有原始 H.264 输出,那么您可以更新 NAL 单元并使用您需要的其他 SEI NAL 单元修改它们。

【讨论】:

以上是关于无法使用 Media Foundation h264 编码器设置自定义 SEI的主要内容,如果未能解决你的问题,请参考以下文章

与 Media Foundation 一起制作视频

使用 Media Foundation .NET 从 MP4 获取帧速率

使用 IMFSourceReader 进行音频流式传输(Microsoft Media Foundation)

使用 Media Foundation SDK 进行直播

使用 Microsoft Media Foundation 从文件播放视频

Windows Media Foundation 枚举音频设备