使用 IMFSinkWriter 更改标题、作者等元数据

Posted

技术标签:

【中文标题】使用 IMFSinkWriter 更改标题、作者等元数据【英文标题】:Changing the metadata like title, author using IMFSinkWriter 【发布时间】:2019-11-13 04:44:57 【问题描述】:

我正在使用来自Tutorial: Using the Sink Writer to Encode Video 的 SinkWriter 示例。我想为生成的 mp4 文件添加一个标题,类似于以下内容。

_bstr_t strTitle =L"dksldk";

CComPtr<IWMHeaderInfo> pHeaderInfo;
ComCheck(m_pWriter->QueryInterface( IID_IWMHeaderInfo, (void**)&pHeaderInfo ));
ComCheck(pHeaderInfo->SetAttribute( 0,  g_wszWMTitle, 
WMT_TYPE_STRING, (BYTE*)(wchar_t *)strTitle, 2*(strTitle.length()+1)));

有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

Sink Writer API 不提供请求的功能。但是您可以完成 MP4 文件的写入,关闭接收器写入器实例,然后使用 Media Foundation MPEG-4 属性处理程序(请参阅SHGetPropertyStoreFromParsingName 和此处的代码 sn-p:Access denied on setting property after clearing same property)将属性添加到完成的文件。

【讨论】:

以上是关于使用 IMFSinkWriter 更改标题、作者等元数据的主要内容,如果未能解决你的问题,请参考以下文章

IMFSinkWriter 中的错误?

IMFSinkWriter::BeginWriting 未初始化,因为 IMFMediaEventGenerator 有未决事件

使用 IMFSinkWriter 编码的视频的播放速度根据宽度变化

媒体基础 MP4 编码:IMFSinkWriter 不接受 PCM 输入

通过 ICodecAPI 为 H.264 IMFSinkWriter 编码器设置属性

使用 Github 指南更改作者信息不起作用