添加源
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
[此 API 不受支持,将来可能会更改或不可用。]
创建源对象的方式与创建其他时间线对象的方式相同。 但是,在将其插入时间线之前,必须至少在源上指定以下属性。
- 相对于时间线的开始和停止时间。 调用 IAMTimelineObj::SetStartStop 方法。
- 要用作源的媒体文件。 使用表示文件名的宽字符字符串调用 IAMTimelineSrc::SetMediaName 方法。
- 相对于原始文件的媒体启动和停止时间。 调用 IAMTimelineSrc::SetMediaTimes 方法。 有关媒体时间的详细信息,请参阅 DirectShow 编辑服务中的时间。
在以下示例中,源剪辑开始进入文件四秒。 媒体持续时间为 10 秒,是时间线持续时间的两倍,这意味着源将以两倍的正常速度播放。 常量 UNITS 定义为 10000000 (10^7) 等于 1 秒。
pSourceObj->SetStartStop(0, 50000000)
BSTR bstrFile = SysAllocStringLen(OLESTR("C:\\example.avi"), 15);
pSource->SetMediaName(bstrFile);
SysFreeString(bstrFile);
pSource->SetMediaTimes(40000000, 140000000);
注意
目前,DES 无法同时呈现使用视频压缩管理器 (VCM) 编解码器压缩的超过 75 个源。 此外,如果整个项目包含超过 75 个此类源,则必须使用动态重新连接,否则 DES 无法预览项目。 有关详细信息,请参阅 IRenderEngine::SetDynamicReconnectLevel。
有关源的详细信息,请参阅 使用源。
相关主题