音轨切换的问题(Directshow)(200)

  • 主题发起人 主题发起人 kivens
  • 开始时间 开始时间
K

kivens

Unregistered / Unconfirmed
GUEST, unregistred user!
试遍了所有的带IAMStreamSelect接口的filter,发现切换时都会造成视,音频停顿一下,部分还会造成视,音频不同步,原以为很简单实现,于是自己写了一个二路in一路out的transform filter来处理,结果发现不是想象中的那样,因为transform中没有区分是哪一路Pin来数据,sample数据中两路混在一起,而且播放速度异常的慢,后来改写代码把不需要的哪一路直接丢掉,这下大部分的DVD速度正常了,但在切换音轨会造音频和视频严重的不同步,而且还有极少数DVD一条音轨正常,一条音轨变慢[:(!],因为以前未接触directshow,调了二天,无从下手,希望有做过类似东东的朋友给点提示,或者告诉我有哪些可以下到可以实现无停顿音轨切换的filter,谢谢,下图是我调试时用的图:
directshow.jpg
 
你的问题应出在transform filter 上,五年前我开发过一个VOD项目,当时为了播放MPEG2格式的文件,用到过一个CyberLink Corp.公司的 filter它的音频是一个outpin,切换时很正常!你在网上找找看,多试试,应可以解决这个问题.
 
3cs,非常感谢!我从网上下了一个CyberLink MPEG Splitter,他的filter应该是有做音轨的处理,输出只有一个AC3,但我找不到他的SDK,用IAMStreamSelect及IDvdControl做过QueryInterface都失败了,而且这个filter和我的Source filter有点小冲突(因为为了处理加密过的文件,source filter没有用系统带的),后来我从网上终于找到一个合适的Splitter:Nero Splitter,这个filter完全符合我的需求,但现在碰到的问题和CyberLink的一样,因为filter没有把接口暴露出来,我无法在程序中调用这些功能,不知从哪里可以找到这个filter的SDK?
 
你可以试试,MainConcept MPEG Splitter,它有IAMStreamSelect的方法,你可以试试!
 
这个Splitter的IAMStreamSelect应该是没有实际功能的,调用时返回 0x80004001,应该是功能没有实现,只是做了一个接口在那里,不知是不是我用的版本的问题,我用的是1.0.1.20
 
MainConcept MPEG Splitter 这个我也试了一下,是有问题!测到的只有一条流,所以没法切换。。。不知是什么原因!
 
我刚试了一下,系统给的MPEG2 Splitter这个可以,我测的是一个VOB文件,一共2条流,分别是0,1,用IAMStreamSelect可以正常切换音轨!用这个Splitter吧,快给分我[:D][:D]
 
不好意思,这几天我到合肥有事去了,周末回来测试如果没有问题就马上结贴,谢谢
 
系统的MPEG2 Splitter好多的文件支持不了,Nero Splitter如果视频走PC没问题,如果视频走神龙卡有时会速度会变慢,神龙卡自己的Splitter是最合适的,但他分离出来的音频除了神龙卡自己可以识别外,其它的解码器都有问题,真的吐血了
 
搞不懂你要作什么?你的GraphEdit图是个软解压,用MPEG-2 Splitter本来就是只能支持MPEG2格式的文件,怎么又多出了一个神龙卡呢?即然你说到神龙卡,那就更简单了,它自己的Splitter 本身就是支持MPEG1,MPEG2的,而且分出来的也是一条音频,并且支持IAMSTREAMSELECT。。。
 
对了,你的那个Audio Switch Filter能不能发一个给我呀?goldenmusic@21cn.com
 
是这样的,我的音频需要自己做一些处理才能最终输出到神龙卡(象EQ调节,音量均衡,变调这一类的),用神龙卡自带的splitter分离出来音频总是会有一些问题,Audio Switch Filter是我自己做测试时写的一个2路IN,一路OUT的Transform Filter,一直有问题,所以就想找一个已经有IAMSTREAMSELECT接口的Splitter.那个图是测试用的,实际连接是输出到神龙卡的.
 
刚把DCDSP的IAMSTREAMSELECT的实现部分大致看了一遍,估计直接简单的从TBCTransformFilter继承过来会有问题,等有时间再想想办法看有没有其它的实现方法了,我现在是先Stop,再重新连接到正确的音轨,再Play [:(!]
 
多人接受答案了。
 
终于搞定,把TBCTransformInputPin,TBCTransformFilter改了N多才搞定.[:(!]
 
后退
顶部