个人对于Directshow的理解 回复otisyf
来源:互联网 发布:阿里云全球总部 编辑:程序博客网 时间:2024/04/28 21:14
jinlking:谢谢指教.
首先对于您说的:我的音频格式要有一个Source Filter ,如果Source出来的还不是PCM数据的话,还要有一个Codec filter进行解码???
但是按DirectShow开发指南中关于DirectX中如此介绍:filter中的Source Filter负责获取数据,Transform Filter负责数据格式转换(包含编码/解码),Rending Filter负责数据最后去向!
1)那你说的要加入的Codec filter可以放在Transform Filter中处理吗?而且不能通过在filter提供的原始中的Source Filter中加入对文件的过滤吗?
2)filter提供的原始中的Source Filter过滤的文件必须是标准格式的或者PCM数据吗?我的原始文件为压缩文件.
回复 otisyf
首先一般PC上面有两种类型的AudioRender,一个是基于DSound另外一个是基于AudioWave,他们支持的并不只是PCM数据,但是这两个Render支持的格式肯定有限,并且一般都是一些未压缩的格式。
如果Source出来的不是它所支持的格式,就肯定要写一个Codec Filter,CodecFilter就是Transform Filter啊,我的理解只有OutputPin就是Source,有进有出的就可以理解成Transform Filter(包含Codec Filter) ,有进无出的就是Render Filter,Codec Filter我把它理解成负责格式解码的Transform filter.
Codec Filter有很多,基本上每种格式都要有对应的Codec,如Mp3 ogg flac ape wav等等,有些你的系统已经有了,那么你的播放器通过智能连接就可以播放对应格式的文件,但是,如果没有这种Codec或者注册有问题,那么Graph找不到对应的Codec Filter就不能播放。
原始的Source Filter,你的意思是不是系统已经有的并且注册过的Source filter,原始的Source Filter一般的操作系统上面就有好几个,对于几种不同的文件存储方式,一般文件是采用RIFF进行存储的,这样应该能够用原始的Source Filter(个人猜测),我也不知道系统自带的Source Filter能否支持你的格式,没有深究过。
而且不能通过在filter提供的原始中的Source Filter中加入对文件的过滤吗?这个问题我看的不是很懂,因为Source FIlter都是要注册的,注册之后的Source Filter就可以与某种或者某类文件相关联(如果是网络文件,就与某种网络协议相关连),打开一个文件的时候,自动的通过协议、后缀名或者数据匹配找到对应的Source filter,这样就实现了你所说的文件过滤。“文件过滤”我是这样理解的。
2、单纯的PMC数据一般不能播放的,因为缺少文件头,只有数据,render是不会知道采样率、声道等音频播放的必要信息,一般媒体文件都是一块一块的组成的(chunk),每一个chunk都是由四个字符FOUCC标准,这四个字符是一个标准组织维护的(但并不是所有文件都依据这个标准),根据这四个字符你就知道,我的这一块存的是什么东东,是文件头 还是数据,是音频文件头 或者视频文件头,或者是一副图片(Mp3中的封面)、或者是一串字符(Mp3 ID3中的歌词),甚至还可以是自定义的一些东东,Source Filter就是负责解析文件的。但是解析出来的并不是Render可以播放的,还要通过对应的解码方法进行解码才能播放,对应的解码就是Codec FIlter,也就是Transform Filter
初学DShow,有问题大家可以相互交流一下。
首先对于您说的:我的音频格式要有一个Source Filter ,如果Source出来的还不是PCM数据的话,还要有一个Codec filter进行解码???
但是按DirectShow开发指南中关于DirectX中如此介绍:filter中的Source Filter负责获取数据,Transform Filter负责数据格式转换(包含编码/解码),Rending Filter负责数据最后去向!
1)那你说的要加入的Codec filter可以放在Transform Filter中处理吗?而且不能通过在filter提供的原始中的Source Filter中加入对文件的过滤吗?
2)filter提供的原始中的Source Filter过滤的文件必须是标准格式的或者PCM数据吗?我的原始文件为压缩文件.
回复 otisyf
首先一般PC上面有两种类型的AudioRender,一个是基于DSound另外一个是基于AudioWave,他们支持的并不只是PCM数据,但是这两个Render支持的格式肯定有限,并且一般都是一些未压缩的格式。
如果Source出来的不是它所支持的格式,就肯定要写一个Codec Filter,CodecFilter就是Transform Filter啊,我的理解只有OutputPin就是Source,有进有出的就可以理解成Transform Filter(包含Codec Filter) ,有进无出的就是Render Filter,Codec Filter我把它理解成负责格式解码的Transform filter.
Codec Filter有很多,基本上每种格式都要有对应的Codec,如Mp3 ogg flac ape wav等等,有些你的系统已经有了,那么你的播放器通过智能连接就可以播放对应格式的文件,但是,如果没有这种Codec或者注册有问题,那么Graph找不到对应的Codec Filter就不能播放。
原始的Source Filter,你的意思是不是系统已经有的并且注册过的Source filter,原始的Source Filter一般的操作系统上面就有好几个,对于几种不同的文件存储方式,一般文件是采用RIFF进行存储的,这样应该能够用原始的Source Filter(个人猜测),我也不知道系统自带的Source Filter能否支持你的格式,没有深究过。
而且不能通过在filter提供的原始中的Source Filter中加入对文件的过滤吗?这个问题我看的不是很懂,因为Source FIlter都是要注册的,注册之后的Source Filter就可以与某种或者某类文件相关联(如果是网络文件,就与某种网络协议相关连),打开一个文件的时候,自动的通过协议、后缀名或者数据匹配找到对应的Source filter,这样就实现了你所说的文件过滤。“文件过滤”我是这样理解的。
2、单纯的PMC数据一般不能播放的,因为缺少文件头,只有数据,render是不会知道采样率、声道等音频播放的必要信息,一般媒体文件都是一块一块的组成的(chunk),每一个chunk都是由四个字符FOUCC标准,这四个字符是一个标准组织维护的(但并不是所有文件都依据这个标准),根据这四个字符你就知道,我的这一块存的是什么东东,是文件头 还是数据,是音频文件头 或者视频文件头,或者是一副图片(Mp3中的封面)、或者是一串字符(Mp3 ID3中的歌词),甚至还可以是自定义的一些东东,Source Filter就是负责解析文件的。但是解析出来的并不是Render可以播放的,还要通过对应的解码方法进行解码才能播放,对应的解码就是Codec FIlter,也就是Transform Filter
初学DShow,有问题大家可以相互交流一下。
- 个人对于Directshow的理解 回复otisyf
- 对于dequeueReusableCellWithIdentifier:的个人理解
- 对于dequeueReusableCellWithIdentifier:的个人理解
- 对于dequeueReusableCellWithIdentifier:的个人理解
- 个人对于SDN的理解
- 个人对于lower_bound的理解
- 对于bootstrap的个人理解
- 个人对于项目成功失败的理解
- 个人对于JAVA异常的理解
- 对于递归的个人理解(1)
- 对于递归的个人理解(2)
- 对于this和$(this)的个人理解
- 个人对于OO的一些理解
- 个人对于java引用的理解
- 个人对于归档的初级理解
- 个人对于套接字的一些理解!
- Python中对于yield的个人理解
- [KMP]个人对于KMP算法的理解
- asp.net的特色与优势
- [英语阅读]圣诞驯鹿是雌还是雄?
- ice的基本常识
- javascript子窗体给父窗口传值
- asp.net解决方案的组成
- 个人对于Directshow的理解 回复otisyf
- 连接到access 2007
- asp.net四种建站方式
- 设置观察网络流量的网络监控器
- [双语阅读]美三架航天飞机“退役”后将展览
- 编写asp.net页面的两种方式
- 如何读懂路由器中路由表信息
- 121212
- 121212