求用DirectShow开发最简单的播放器源码

孤帆   2008-7-26 18:42 楼主
跪求一份在WinCE上用DirectShow制作的视频播放器的源码,只要能播放,有图像有声音就可以了,使用EVC或是Visual 2005等做的都可以,希望懂的大虾发发善心,小弟在此先谢过了!!!!

回复评论 (14)

忘了留下我的邮箱,现在补上。
我的邮箱:lailzhihou@126.com
点赞  2008-7-26 18:51
只要几句代码就可以用directshow写个播放器了...我贴出来不知道会不会有分,哈哈
点赞  2008-7-27 11:22
只要几句代码就可以用directshow写个播放器了...我贴出来不知道会不会有分,哈哈,明天来贴吧,现在懒的重写
点赞  2008-7-27 11:22
wince的public目录下面已经提供了这样的源代码。
点赞  2008-7-27 11:50
去看看norains在eeworld上的Blog,有一个完整的DD播放类
点赞  2008-7-28 08:30

  1.         CComPtr pGraphBuilder;
  2.         CString m_strFileName;
  3.         CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
  4.                 _T("媒体文件 (*.wmv)|*.wmv|(*.avi)|*.avi|(*.mp4)|*.mp4||"));

  5.         if(dlg.DoModal()==IDOK)
  6.         {
  7.                 m_strFileName=dlg.GetPathName();

  8.         }
  9.         CoInitialize(NULL);
  10.         if(!pGraphBuilder)
  11.                 pGraphBuilder.CoCreateInstance(CLSID_FilterGraph);
  12.         if(m_strFileName == _T(""))
  13.                 return;
  14.         else
  15.         {
  16.                 HRESULT hr = pGraphBuilder->RenderFile(m_strFileName.GetBuffer(),NULL);
  17.                 if(FAILED(hr))
  18.                         MessageBox(_T("失败"));
  19.                 CComPtr pMW;
  20.                 pGraphBuilder.QueryInterface(&pMW);
  21.                 pMW->put_Owner((OAHWND)this->GetSafeHwnd()); //播放器父窗口句柄
  22.                 pMW->put_WindowState(SW_SHOW);
  23.                 CComPtr pMC;
  24.                 pGraphBuilder.QueryInterface(&pMC);
  25.                 pMC->Run();
  26.         }


停止播放和释放资源

  1.         CComPtr pMC;
  2.         pGraphBuilder.QueryInterface(&pMC);
  3.         pMC->Stop();
  4.         CComPtr pMW;
  5.         pGraphBuilder.QueryInterface(&pMW);
  6.         pMW->put_Owner(NULL);
  7.         pMW->put_WindowState(SW_HIDE);
  8.         CoUninitialize();
点赞  2008-7-28 09:17
CComPtr pGraphBuilder;是全局变量
这个应该只是能播放,有声音,有图像,其他的lz去看norains大大的博客吧,我也去学习下
点赞  2008-7-28 09:21
很感谢大家的帮助,我去看了norains的博客,用他的CMedia类来做,但是有个问题,就是在RenderFile的时候不能返回NOERROR,我打开wmv的文件的时候返回的hr是262722,这个时侯让程序继续下去,这时候可以听到声音,但没有图像。如果打开avi的文件的时候返回的hr是-2147220945,有谁知道是怎么回事吗?是不是因为这样的原因才没有图像出来??
点赞  2008-7-28 14:22
是不是没有解码器,你用系统自带的media player播放试下看能不能播
点赞  2008-7-28 15:09
感谢Reallyu,确实是 没有解码器的原因,现在的问题是,为什么播放的时候,画面不卡,声音会卡????不知道你们有没有这种现象??是不是的OS的问题????
点赞  2008-7-28 18:10
引用: 引用 10 楼 lailzhihou 的回复:
感谢Reallyu,确实是 没有解码器的原因,现在的问题是,为什么播放的时候,画面不卡,声音会卡????不知道你们有没有这种现象??是不是的OS的问题????


一般都是画面卡,而声音不卡,说明LZ的板子处理速度不够。但LZ遇到的正好是反的,就也有可能是解码不对,具体原因需要具体分析。
点赞  2008-7-28 19:59
声音卡有可能是声卡驱动的问题,你试试放mp3,声音卡不卡
点赞  2008-7-28 21:17
我晕,下个DX的SDK里面就有
点赞  2008-7-29 08:37
Dx的不太好用。。太卡。还是好好研究下TCPMP
点赞  2008-7-29 10:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复