DirectShow SmartTee分流 RenderStream 问题

DirectShow中,如果想将一路流分解成两路进行不同的处理,比较简单的是加入一个SmartTee,但是要注意,SmartTee的Preview端子输出的流,将会取消时间戳。

在把SmartTee与其他filter连接起来时,要注意:不能将SmartTee当作ICaptureGraphBuilder2::RenderStream()的pSource参数来使用,估计是因为SmartTee的输出Pin并非采用PinCategory.Capture或PinCategory.Preview模式,所以只能通过查找名称或输出Pin序号的方式来获得希望作为源的Pin,然后使用IGraphBuilder::Connect()来连接SmartTee的某个输出Pin和下一个filter的输入Pin。

SmartTee的两个端子名称分别为“Preview”和“Capture”,其中,Capture Pin在输出端子中序号为0,Preview Pin在输出端子中序号为1。

以上引自 :http://hi.baidu.com/highsun_gao/blog/item/bb4fed1748705a0b4b90a7d6.html

我也是的确没有实现用RenderStream 来动态链接 filter
hr = i_pCapture->RenderStream(NULL, NULL, pCaptureFilter, NULL,m_pSmartTee);
hr = i_pCapture->RenderStream(NULL,NULL,m_pSmartTee,NULL,m_pPreview);
hr = i_pCapture->RenderStream(NULL,&MEDIATYPE_Video,m_pSmartTee,NULL,pAsfWriter);
hr = i_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Audio,pSoundFilter,NULL,pAsfWriter);
有预览 但是保存的文件一直都是在9点几K. 如果注释掉 预览  保存又没问题了。 不解了。。。。
可能真的就像上个帖子说的 只能用PIN来连接。。。。  或者直接按照DirectShow SDK 的Combining Video Capture and Preview 中所说 按照第一种方法:

hr = i_pCapture->RenderStream (&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,pCaptureFilter, NULL, NULL); 
hr = i_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pCaptureFilter,NULL,pAsfWriter);
hr = i_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Audio,pSoundFilter,NULL,pAsfWriter); 

如果那个大哥实现了RenderStream SmartTee 希望 不吝赐教

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值