DShow中WAV播放的问题~

KevinYuen 2009-10-23 11:20:08
我做了一个简单的流媒体播放器,使用的是RenderFile接口来播放URL媒体文件,文件格式为(.wav)。
不过在有些机器上会出现程序假死的现象,有朋友告诉我是因为RenderFile使用了一个不可靠的第三方解码器。

我的问题就是如何使用系统自带的标准解码器来对.wav等这样的媒体进行播放,避免上述中的假死现象。

我刚开始接触DShow,希望各位大侠能够说明的详细点,最好有代码段,比如查找标准wav filter的过程和播放代码。

...全文
90 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
koople 2009-10-28
  • 打赏
  • 举报
回复
智能连接有时候会出点问题的.. 你要好好看看graph
koople 2009-10-28
  • 打赏
  • 举报
回复
说明是你这两个filter 之间连接缺乏某个转换器,有些机子上正好有这个解码器.. 有些没有!
KevinYuen 2009-10-28
  • 打赏
  • 举报
回复
这个现象指在某些机器上不定时出现,比如在清空临时文件后,会在第一次播放的时候出现,后面就正常了~而有些机器没有这种问题。
我问一下,需要不需要IAsyncReader?
koople 2009-10-28
  • 打赏
  • 举报
回复
你拿ge 把 这两个filter 在ge中连一下不就知道问题出在何处了么? 可能中间还要加转换器!
KevinYuen 2009-10-28
  • 打赏
  • 举报
回复
我用手动的方式,发现问题出现在 Connect()方法:
[code=C/C++
hr = CoCreateInstance( CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **)&pDSoundRenderer);
if( SUCCEEDED( hr ) )
{
hr = m_pGraph->AddFilter( pDSoundRenderer, L"Audio Renderer" );
if( SUCCEEDED( hr ) )
{
IPin *pFileOut = NULL, *pWAVIn = NULL;
if( SUCCEEDED( GetPin( pInputFileFilter, PINDIR_OUTPUT, &pFileOut ) ) )
{
if( SUCCEEDED( GetPin( pDSoundRenderer, PINDIR_INPUT, &pWAVIn ) ) )
{
hr = m_pGraph->Connect(pFileOut, pWAVIn);
if( SUCCEEDED( hr ) )
{
//.....
}
}
}
}
[/code]

在线等待 ~
KevinYuen 2009-10-28
  • 打赏
  • 举报
回复
是不是因为我播放的是URL网络上的歌曲呢?
我没有使用过 IAsyncReader这个,有网友说通过这个检查状态,具体应该如何操作呢,我没有接触过,不知道从哪里下手~有范例或者指导性的东西~分不够我再加,隔行如行山啊~
KevinYuen 2009-10-26
  • 打赏
  • 举报
回复
GE是指什么 全称是什么~
bourbaki 2009-10-26
  • 打赏
  • 举报
回复
graphedit的file菜单下有个connect to remote graph,可以用来查看运行程序的graph
mjh1021 2009-10-26
  • 打赏
  • 举报
回复
GraphEdt
koople 2009-10-23
  • 打赏
  • 举报
回复
你 用GE 把.wav 播放一下 看看 它的graph 是什么样子的!

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧