这个问题纠结我好久了,我做了一个程序,基本上能实现了。我一个buffer满了在wim_data中就取得这个buffer的数据然后开一个线程去播放,用setevent和waitfor的线程同步来实现,一个buffer满了就set一下,然后播放循环里waitfor,一旦发现buffer满了就播放。目前基本上可以实现了。但是关键是按下停止键再按播放键就偶尔会出错。
大家有做过实时录音并播放的么?采用什么思路啊?谢谢
------解决方案--------------------------------------------------------
没做过,但是做过 录制视频 并预览的 不知道能不能有帮助
1 是用 SmartTee分流 但是只能用Pin连接 不能RenderStream 来动态链接 filter
2 hr = i_pCapture->RenderStream (&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,pCaptureFilter, NULL, NULL);
hr = i_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pCaptureFilter,NULL,pAsfWriter);
这样 直接重设备上 连接出来
------解决方案--------------------------------------------------------
我知道到你出了什么错。 但应该采用这样的思路。 录制好的Buffer应该放到一个Buffer队列中。 播放程序到这个Buffer来取就可以了。 注意 要做好同步。 可以使用关键区
我估计你的错误也有可能是同步做的不好造成的。