本文介绍一个最简单的基于 DirectShow 的视频播放器。该播放器对于初学者来说是十分有用的,它包含了使用 DirectShow 播放视频所有必备的函数。

直接贴上代码,具体代码的含义都写在注释中了:

/* 雷霄骅* 中国传媒大学/数字电视技术* leixiaohua1020@126.com**/
// aviplayer.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"
#include <dshow.h>// 用到的DirectShow SDK链接库
#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 组件");return -1;}
// 创建滤波器图表管理器hr=CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void **)&pGraph);if (FAILED(hr)){printf("错误 - 无法创建 Filter Graph Manager.");return -1;}// 查询媒体控制和媒体事件接口hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
// 建立图表,在这里你可以更改待播放的文件名称hr = pGraph->RenderFile(L"E:\\movie\\外婆.VOB", NULL);if (SUCCEEDED(hr)){// 运行图表.hr = pControl->Run();if (SUCCEEDED(hr)){//等待回放结束事件.long evCode;pEvent->WaitForCompletion(INFINITE, &evCode);// 切记: 在实际应用当中,不能使用INFINITE标识, 因为它会不确定的阻塞程序}}
// 释放所有资源和关闭COM库pControl->Release();pEvent->Release();pGraph->Release();CoUninitialize();return 0;
}

源代码下载(VC2010): http://download.csdn.net/detail/leixiaohua1020/6456581

50行代码实现的一个最简单的基于 DirectShow 的视频播放器相关推荐

  1. 最简单的基于 DirectShow 的视频播放器

    源程序下载链接:https://download.csdn.net/download/bmjhappy/11250669 50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍 ...

  2. 转:最简单的基于 DirectShow 的视频播放器

    50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍一个最简单的基于 DirectShow 的视频播放器.该播放器对于初学者来说是十分有用的,它包含了使用 DirectSho ...

  3. 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器

    最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版) 最简 ...

  4. 一个简单的基于 DirectShow 的播放器 2(对话框类)

    上篇文章分析了一个封装DirectShow各种接口的封装类(CDXGraph):一个简单的基于 DirectShow 的播放器  1(封装类) 本文继续上篇文章,分析一下调用这个封装类(CDXGrap ...

  5. 一个简单的基于 DirectShow 的播放器 1(封装类)

    DirectShow最主要的功能就是播放视频,在这里介绍一个简单的基于DirectShow的播放器的例子,是用MFC做的,今后有机会可以基于该播放器开发更复杂的播放器软件. 注:该例子取自于<D ...

  6. 50行代码写的一个插件,破解一个H5小游戏

    小游戏链接:测测你的眼睛对色差的辨识度http://www.webhek.com/post/color-test.html?from=timeline 废话不多说,先放代码: window.onloa ...

  7. 最简单的基于DirectShow的示例:视频播放器

    ===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...

  8. 最简单的基于DirectShow的示例:获取Filter信息

    ===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...

  9. 最简单的基于DirectShow的示例:视频播放器图形界面版

    ===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...

最新文章

  1. TL-ER5120路由器配置文档
  2. python如何获取鼠标点击图片的像素点坐标
  3. why is list delete and edit icon rendered
  4. python 如何定义空字典_python字典中如何添加键值对
  5. pandas常用函数总结
  6. 孙策被刺杀,凶手是孔雀东南飞里的焦仲卿,主谋是曹操谋士郭嘉
  7. 用python做计算器(超级版)
  8. 计算机老丢失运行库,计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的修复方案
  9. 教你STM32官方开发板原理图下载
  10. analyze怎么优化oracle,Analyze table对Oracle性能的提升
  11. 【Web】CSS(No.33)Css页面布局经典案例(三)《京东首页》
  12. 【系统分析师之路】系统分析师知识地图
  13. 快速截屏并保存图像 - 快速保存剪切板截图到图像-
  14. 社交 APP 唔哩星球完成数百万元天使轮融资,投资方为启明创投
  15. java.lang.IllegalArgumentException 如何解决这个异常
  16. 年轻人,劝你不要做前端
  17. 使用Canvas把照片转换成素描画
  18. androidlib.java_实现 Java SDK 库
  19. CSS 自定义Radio样式
  20. epoll聊天室的实现

热门文章

  1. SQL Server数据库技术大全——14讲 执行计划
  2. HDU5687 Problem C【字典树】
  3. 【关键字】volatile
  4. linux/unix 基本概念的认识(sha-bang 、PPA)
  5. 阿姆达尔定律(Amdahl's law)
  6. 机器学习/深度学习测试题(一) —— 单层感知器的激活函数
  7. Linux 下非 root 用户安装 theano(配置 GPU)
  8. Matlab Tricks(十九)—— 序列左右移的实现
  9. 博弈论与逻辑思维(传教士与妻子忠贞的问题)
  10. 面向对象 —— 类设计(十)—— 成员函数