读书人

DirectShow怎么获取音频左右声道的电平

发布时间: 2012-06-03 16:59:40 作者: rapoo

DirectShow如何获取音频左右声道的电平值
我用DirectShow开发了一个播放器,可以做简单的非编工作,目前就是左右声道的电平值拿不到,确切的是拿的不准。
详细情况如下:
我在GraphicEdit中的声音流的最后一个filter—efault DirectSound Device)前面加了一个SampleGrabber,利用它里面的回调函数(int ISampleGrabberCB.SampleCB(double SampleTime, IMediaSample pSample)),我也可以获得IMediaSample值,问题是:

1.怎么把IMediaSample换算成左右声道的电平值,我目前用傅氏变换做的,但是有非常明显的误差
2.为什么总是会获取比当前播放帧还要往后的IMediaSample,比如当前播放到第50帧,实际获取的IMediaSample常常到75帧,一般多出1秒。

以上问题我用C++,C#做都是这样

[解决办法]
1.需要PCM的量化公式或者量化算法。
2.可能是Render Filter缓存数据了。

读书人网 >多媒体

热点推荐