C++ 如何在Windows MediaFoundation SDK中指定语言列表对象

C++ 如何在Windows MediaFoundation SDK中指定语言列表对象,c++,ms-media-foundation,encoder,wmv,C++,Ms Media Foundation,Encoder,Wmv,目前我尝试使用Windows MediaFoundation SDK(C++)在Windows 10上创建WMV文件。 我能够创建一个WMV文件,但是我很难将语言列表对象(7C4346A9-EFE0-4BFC-B229-393EDE415C85)添加到asf文件中 我正在使用WMSinkWriter创建一个文件,我如何传递输入视频/音频数据,如下文所述: 以下是我所做工作的总结: 调用CoInitializeEx初始化COM库 调用MFStoundation初始化微软媒体基金会。 创建水槽编写

目前我尝试使用Windows MediaFoundation SDK(C++)在Windows 10上创建WMV文件。 我能够创建一个WMV文件,但是我很难将语言列表对象(7C4346A9-EFE0-4BFC-B229-393EDE415C85)添加到asf文件中

我正在使用WMSinkWriter创建一个文件,我如何传递输入视频/音频数据,如下文所述:

以下是我所做工作的总结:

  • 调用CoInitializeEx初始化COM库
  • 调用MFStoundation初始化微软媒体基金会。
  • 创建水槽编写器
  • 将视频帧发送到接收器写入器
  • 调用IMFSinkWriter::Finalize以完成输出文件
  • 释放指向接收器写入程序的指针
  • 呼叫MFShutdown
  • 打电话给我
  • 互联网上没有太多信息,因为它是旧的SDK

    如果您有任何线索,请告诉我。

    ASF媒体接收器的接口可以通过使用并指定MF\u Sink\u Writer\u MEDIASINK从接收器写入程序获得,如下所示:

    pSinkWriter->GetServiceForStream(MF_SINK_WRITER_MEDIASINK, GUID_NULL, IID_PPV_ARGS(&pContentInfo));
    
    其中pContentInfo指向IMFASFContentInfo


    您应该能够使用IMFASFContentInfo来设置语言列表,方法是使用IMFASFContentInfo对象使用方法获得的相应属性上的任何或所有属性。

    Hello VuVirt,非常感谢您的回答。我想再次检查我所做的是否正确,因为语言似乎并没有设置为ASF。不知怎的,它在ASF查看器中显示为“en-us”。为了简单起见,我使用以下示例代码进行了测试:我正在做的是:在调用IMFSinkWriter::BeginWriting之后(因为在调用此函数之前,GeneratePresentationDescriptor会意外返回E_),我正在调用IMFSinkWriter::GetServiceForStream以获取IMFASFContentInfo,并调用IMFASFContentInfo::GeneratePresentationDescriptor以获取IMFPresentationDescriptor,然后调用索引为0的IMFPresentationDescriptor::GetStreamDescriptorByIndex以获取IMFStreamDescriptor。然后,调用IMFStreamDescriptor::SetString(MF_SD_LANGUAGE,L“en gb”)来设置语言,但语言似乎并没有设置为ASF。我做错什么了吗?