DShow笔记

//DShow实现的一个小播放器程序
IGraphBuilder *pGraph;
IMediaControl *pMediaControl;
IMediaEvent *pMediaEvent;
IVideoWindow *pVideoWindow;
IBasicVideo *pBasicVideo;
IBasicAudio *pBasicAudio;
IMediaSeeking *pMediaSeeking;

LONG lHeight, lWidth;
LONGLONG Current, Stop;

    CoInitialize(NULL);
    CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
     IID_IGraphBuilder, (void**)&pGraph);

    pGraph->QueryInterface(IID_IMediaControl, (void**)&pMediaControl);
    pGraph->QueryInterface(IID_IMediaEvent, (void**)&pMediaEvent);
    pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVideoWindow);
    pGraph->QueryInterface(IID_IBasicVideo, (void **)&pBasicVideo);
    pGraph->QueryInterface(IID_IBasicAudio, (void **)&pBasicAudio);
    pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pMediaSeeking);
   
    pGraph->RenderFile(L"D://movie//eyes.rm", NULL);
    //要窗口句柄.
    pVideoWindow->put_Owner((OAHWND)hWnd); 
    //播放窗口句柄的样式.
    pVideoWindow->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
    //得到电影片的高宽.
    pBasicVideo->GetVideoSize(&lWidth, &lHeight);
    //设置播放时的位置和大小.
    RECT client;
    GetClientRect(hWnd, &client);
    pVideoWindow->SetWindowPosition(client.left, client.top,
            client.right, client.bottom);
    //播放电影.
    pMediaControl->Run();
    //得到电影片播放的进度.
    pMediaSeeking->GetPositions(&Current, &Stop);
    //等待播放完毕.
   //LONG evCode;
   //pMediaEvent->WaitForCompletion(INFINITE, &evCode);
    //释放各种接口资源.
   pMediaEvent->Release();
   pMediaControl->Release();
   pVideoWindow->Release();
   pBasicVideo->Release();
   pBasicAudio->Release();
   pMediaSeeking->Release();
   pGraph->Release();
   CoUninitialize();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值