使用WMV VC-1以外的来源在多源DES项目中寻找的问题

时间:2017-08-11 11:12:34

标签: directshow

我有一个基于DirectShow编辑服务的遗留软件。它有一个播放器,其目的是合并一些视频文件片段,并使用EVR将其渲染为表格上的DES预览。 它适用于一个源或所有源都是WMV VC-1文件。但是,如果IAMTimelineSrc中添加了多个IAMTimeline,那么如果存在WMV VC-1以外的其他来源,则在我尝试搜索时间轴时预览会挂起。我没有收到任何错误或任何错误,音频和视频渲染都停止了。

我以直截了当的方式创建源代码: 首先,我创建一个新的空时间轴节点: IAMTimeline::CreateEmptyNode TIMELINE_MAJOR_TYPE SourceIAMTimelineObj::SetStartStop IAMTimelineSrc::SetMediaName IAMTimelineSrc::SetMediaTimes (4) 然后设置所需的源属性:

IRenderEngine::SetTimelineObject

IRenderEngine::ConnectFrontEnd

IRenderEngine::GetFilterGraph

然后我用IRenderEngine渲染IAMTimeline:

IAMTimelineGroup::SetPreviewMode(true)

IRenderEngine::GetGroupOutputPin

ICaptureGraphBuilder2::RenderStream

对于每个组(我有2个,一组有视频源,一个有音频源)

WM ASF Reader -> WMVideo Decoder DMO

只要我将WMV VC-1文件用作呈现为IMediaSeeking::SetPositions的源,这一切都能完美运行。 但是,任何其他格式,即使在Movie Maker中工作正常的DV-AVI,也可能使用DES,会导致IMediaSeeking::SetPositions的严重问题。我调用dwCurrentFlags AMSeekingSeekingFlags.AbsolutePositionin 0pStop dwStopFlagsAMSeekingSeekingFlags.NoPositioning ${filename:replace("Info"):append('.'):append(${fromDate})}

通过DES预览寻找可能导致此类问题的原因是什么?我无法相信DES只与WMV VC-1兼容,特别是因为Movie Maker明显支持的格式不仅仅是WMV VC-1。我可能会失踪什么?

0 个答案:

没有答案