一 个简单的基于DirectShow的打开本地视频文件的例子。

  参考了各种资材,网上很多,也比较简单,但有个问题就是在调用" RenderFile "函数时只有在x86下都会返回S_OK,很费解。。。待继续深入研究一下。

代码:

    IGraphBuilder    *gGraph = NULL;IMediaControl    *gControl = NULL;IMediaEvent      *gEvent = NULL;        

bool CreateSimplerPlayer(PTSTR pstrFileName){// init comHRESULT hr = CoInitialize(NULL);if (FAILED(hr))return false;// init gragh builderhr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&gGraph);if (FAILED(hr))return false;// query controler interface in graphbuilderhr = gGraph->QueryInterface(IID_IMediaControl, (void**)&gControl);if (FAILED(hr))return false;// query event interface in graphbuilderhr = gGraph->QueryInterface(IID_IMediaEvent, (void**)&gEvent);if (FAILED(hr))return false;hr = gGraph->QueryInterface(IID_IBasicVo, (void**)&gVideo);if (FAILED(hr))return false;
// read a filehr = gGraph->RenderFile(pstrFileName, NULL);if (!FAILED(hr)){hr = gControl->Run();if (SUCCEEDED(hr)){long evCode;gEvent->WaitForCompletion(INFINITE, &evCode);return true;}}return false;}

主要就是RenderFile,只要选择播放的文件,IGraphBuilder就智能地帮你构造出整个Filter Graph。

下面是在控制台程序中打开文件管理对话框的代码,选择好文件后将文件路径传给CreateSimplerPlayer。

代码:

TCHAR szBuffer[MAX_PATH] = { 0 };OPENFILENAME file = { 0 };file.hwndOwner = NULL;file.lStructSize = sizeof(file);file.lpstrFilter = _T("所有文件(*.*)\0*.*\0Exe文件(*.exe)\0*.exe\0");//要选择的文件后缀 file.lpstrInitialDir = _T("E:\\");//默认的文件路径 file.lpstrFile = szBuffer;//存放文件的缓冲区 file.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);file.nFilterIndex = 0;file.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;//标志如果是多选要加上OFN_ALLOWMULTISELECTBOOL bSel = GetOpenFileName(&file);//cout << file.lpstrFile << endl;
SimplePlayer::CreateSimplerPlayer(file.lpstrFile);

转载于:https://www.cnblogs.com/-sev-/p/8385396.html

基于DirectShow的简单播放器相关推荐

  1. 基于directShow,打造全能播放器系列之一

    总前言:我打算写一个能实现全能播放的播放器,功能比较简单,也算是抛砖引玉吧,因为内容较多,所以打算写三篇,这是开篇,欢迎大家吐槽 简易播放器的实现 本文的编写环境:visual studio 2008 ...

  2. 基于directShow,打造全能播放器系列之二

    前言:这一篇,分为三个部分,第一部分是添加对简易播放器的补充,第二部分是解码器的安装.配置. 简易播放器的补充 主要内容:添加对双击全屏的代码 注意:有些朋友可能会想,这个有这么麻烦吗,直接添加对ID ...

  3. 音视频基础学习之【01.基于ffmpeg的简单播放器demo实现】

    目录 1.项目配置 2.显示界面设计 3.视频解码显示 流程描述 4.演示 最近在学习音视频基础知识,在这里感谢雷神留下的一系列指引新手入门的宝贵资源,虽然他英年早逝,但他的硕果永存.不由感慨真是天妒 ...

  4. 基于Ffmpeg解码器的简单播放器(a simple audio player based on Ffmpeg)

    这是一个基于Ffmpeg解码器的简单播放器,怎么在Windows上编译Ffmpeg可以在网上找到很多,开发环境是Windows XP SP3+VS2008,其中DirectSound控制单元来自jdk ...

  5. 如何用FFmpeg编写一个简单播放器详细步骤介绍

    如何用FFmpeg编写一个简单播放器详细步骤介绍(转载) FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具.FFMPEG几乎为你把所有的繁重工作都做了,比如解码.编码.复用和解复用. ...

  6. 基于Qt的音乐播放器(二)切换歌曲,调节音量,调节语速,暂停

    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 我的投票地址:点击为我投票 文章目录 1.切换歌曲 2.调节音量 3.调节语速 4.播放/暂停 5.我们来看下效果 6.关于上一篇提 ...

  7. 基于QT实现Mp3播放器(代码部分)

    前言     最近有一个课程实验,利用window上的API接口实现MP3播放器. 突发奇想,在linux下用相关接口做一个MP3播放器.最先的打算是完全使用纯C写的,但后来感觉编写调试实在费劲.于是 ...

  8. 基于FPGA的音乐播放器系统设计_kaic

    摘 要 音乐播放器随处可见,广播.CD.MP3.车载播放器.智能家居等系统,都用播放器娱乐着我们的生活.FPGA以硬件描述语言完成的电路设计,具有运算速度快,编程简单又稳定性,长期维护,成本等优点,本 ...

  9. Android MediaExtractor + MediaCodec构建简单播放器

    对于一个播放器,基本上可以分为以下模块:数据接收(网络/本地)->解复用->音视频解码->音视频同步->音视频输出. 今天我们介绍Android系统中提供的两个播放器模块Med ...

最新文章

  1. Java如何打印异常的堆栈?
  2. AfxInitExtensionModule和AfxTermExtensionModule
  3. 什么是npm package
  4. 《环形女人》:“穿透”与“征兆”(全文)
  5. python 排列组合_python 编写排列组合
  6. Docker容器开机自动启动
  7. PowerJob 应对庞大任务的锦囊妙计:MapReduce
  8. java mysql查询试题_2016年Java认证考试题
  9. u盘安全删除 linux,怎么安全删除U盘
  10. mysql索引一般什么数据结构_mysql索引一般使用什么数据结构
  11. 为什么苹果蓝牙耳机连上还是公放_史上最好用的蓝牙无线耳机?苹果AirPods神奇在哪里!...
  12. 微信摇一摇周边新功能上线
  13. python开发html_Python开发——16.HTML
  14. 关于报错An unexpected error occurred: “https://registry.yarnpkg.com/react: socket hang up“
  15. Java中的Hash值到底是怎么计算的
  16. java强制转换用法_Java入门课|这才是Java强制类型转换的正确使用方法,你真的会用这些吗...
  17. 【夜读】输与赢,在成长的面前都没那么重要
  18. 星汉未来成为 FinOps 产业标准生态联盟首批会员
  19. 猫盘群晖远程访问之Frp
  20. [ECharts] Component legend is used but not imported.

热门文章

  1. 一些金融术语(随时更新)
  2. GNU操作系统和操作系统内核和MinGW
  3. 一文读懂移动操作系统发展史
  4. 亚马逊 SEO 的排名因素
  5. 常用的第三方jar包的说明
  6. 计算机检测报告素材,笔记本检测报告模板.doc
  7. 解决win10,wls2新装不能联网的问题
  8. UnRaid安装Visual Studio Code并设置为中文界面
  9. (毕业设计资料)基于51单片机的音乐喷泉设计
  10. 网页设计者值得一去的地方