DShow实现一个avi视频的播放(含有个人解释和注释)
2014-12-13 19:08
232 查看
此项目为win32下的控制台C++代码(别忘记配置DShow库)
// movie_test.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <DShow.h> #pragma comment(lib,"strmiids.lib") // 也可以在属性里面添加 int _tmain(int argc, _TCHAR* argv[]) { IGraphBuilder *pGraph = NULL; // 图标管理器接口 IMediaControl *pControl = NULL; // 媒体控制器接口 IMediaEvent *pEvent = NULL; // 媒体事件接口 // 初始化com库 HRESULT hr = CoInitialize(NULL); if(FAILED(hr)) { printf("初始化com组件失败\n"); return -1; } // 创建滤波器链表管理器 hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&pGraph); if(FAILED(hr)) { printf("初始化com组件失败\n"); return -1; } //查询媒体控制和媒体事件接口 hr = pGraph->QueryInterface(IID_IMediaControl,(void **)&pControl); hr = pGraph->QueryInterface(IID_IMediaEvent,(void **)&pEvent); //建立链表,这里用户可以更改待播放的文件的名称 hr = pGraph->RenderFile(L"E:\\DXSDK\\DXSDK 9.0B\\Samples\\Media\\ruby.avi",NULL); if(SUCCEEDED(hr)) { //运行链表 hr = pControl->Run(); if(SUCCEEDED(hr)) { //等待回放结束 long evCode; pEvent->WaitForCompletion(INFINITE,&evCode); // 切记:在实际应用中,不能使用INFINITE标识,因为他会不确定的阻塞程序 } } // 释放所有资源 pControl->Release(); pEvent->Release(); pGraph->Release(); CoUninitialize(); printf("this is example\n"); return 0; }
相关文章推荐
- DShow实现一个avi视频的播放(含有个人解释和注释)
- 播放一个AVI视频,相当于使用opencv创建自己的视频播放器
- Directshow学习笔记五-----一个简单的视频播放程序(个人学习总结,仅供参考)
- UIWebView中视频点击链接直接全屏播放而不是点击一个播放按钮的实现方法
- C#中如何实现AVI视频的播放并且需要在播放视频的同时在视频上进行一些简单线条的绘制?
- html制作简单框架网页二 实现自己的影音驿站 操作步骤及源文件下载 (可播放mp4、avi、mpg、asx、swf各种文件的视频播放代码)
- 使用MATLAB2010实现AVI视频播放
- iOS开发网络篇—实现一个视频播放客户端小应用(二)
- iOS开发网络篇—实现一个视频播放客户端小应用(一)
- opencv实现播放视频文件(AVI) 并设置播放的进度条
- OpenCV学习(四)之播放一个AVI视频
- iOS开发网络篇—实现一个视频播放客户端小应用(三)
- iOS开发网络篇—实现一个视频播放客户端小应用
- c#里什么控件可以播放视频(avi)?怎么实现
- iOS开发网络篇—实现一个视频播放客户端小应用(一)
- c#里什么控件可以播放视频(avi)?怎么实现
- iOS开发网络篇—实现一个视频播放客户端小应用(二)
- iOS开发网络篇—实现一个视频播放客户端小应用(二)
- opencv+ffmpeg实现avi视频的播放
- iOS开发网络篇—实现一个视频播放客户端小应用(二)