在Windows Media中添加数据单元扩展
在处理Windows Media文件时,我们常常需要向其中添加额外的数据,以满足特定的需求。Windows Media Format SDK提供了一种方法,即使用数据单元扩展(Data Unit Extensions,简称DUE),也称为有效负载扩展系统,来向Windows Media文件的流中添加补充数据。
数据单元扩展与元数据的区别
数据单元扩展有时会与元数据混淆。虽然两者都是添加到ASF文件中的额外数据,但它们有明显的区别:
- 数据单元扩展 :是与Windows Media文件中的样本(或一系列样本)相关联的名称和数据对。可以在创建文件时添加,并在播放时从文件中提取。
- 元数据 :通常出现在文件的头部,与任何特定的流无关。例如,标题和作者信息就是元数据类型,而逐样本出现的时间码信息则是数据单元扩展。
添加SMPTE时间码的步骤
在MakeAsfFile函数中,我们可以按照以下步骤添加SMPTE时间码:
// 当添加数据单元扩展时,操作顺序非常重要。
if (TRUE == g_SMPTETimecodes)
{
// (1) 在配置文件流上设置DUE。
hr = AddSmpteDataUnitExtension(pProfile1);
if(FAILED(hr))
{
DbgLog((LOG_TRACE, 3,
_T("Failed AddSmp