1. 首先我们要封装自己的播放dll文件

2. 封装功能即查找文件路径,和播放等等的功能

3. 我使用的是抽象基类

下面是代码

#ifndef _YSDVIDEOIMP_H
#define _YSDVIDEOIMP_H
#include "YSDVideo.h"
#include <dshow.h>
#pragma comment(lib,"Strmiids.lib")
extern ULONG g_dwRefCount;
class CRtVideo : public IRtVideo
{
public:
HRESULT _stdcall PlayFormFile(LPWSTR szFileName);
HRESULT _stdcall play();
HRESULT _stdcall DisplayVideoWindow(HWND hWnd);
HRESULT _stdcall pause();
HRESULT _stdcall Resume();
HRESULT _stdcall stop();
HRESULT _stdcall over();
HRESULT _stdcall QueryInterface(REFIID riid, LPVOID* ppObject);
ULONG _stdcall AddRef();
ULONG _stdcall Release();
private:
ULONG m_dwRefCount;
IGraphBuilder* pigd;
IMediaControl* pimc;
IMediaEventEx* pimex;
IVideoWindow* pivw;
IMediaPosition* pimp;

public:
CRtVideo();
REFTIME tCurrent;// 当前时间
REFTIME tLength;// 总共时间
REFTIME tRemain;   // 剩余时间
~CRtVideo();
};
class CRtVideoFactory:public IClassFactory
{
public: 
HRESULT _stdcall QueryInterface(REFIID riid, void** ppObject);
ULONG _stdcall AddRef();
ULONG _stdcall Release();
HRESULT _stdcall CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppObject);
HRESULT _stdcall LockServer(BOOL fLock);

CRtVideoFactory();
~CRtVideoFactory();

private:
ULONG m_dwRefCount;

};
#endif

4. 当把功能封装完之后,我就建立一个MFC基于对话框程序,用来播放

5. 在控制台中将生成的dll文件注册

6. 在MFC程序中用import将动态库导入

7. 处理相应的消息,调用功能

8. 生成运行

注意的是,要初始化和释放com库。还有就是封装自己的动态库的时候,建议用GUIDGEN生成GUID,也可以自己手动生成

C/C++系列之如何实现一个avi格式的播放器相关推荐

  1. 如何查看一个avi文件的播放帧率?和帧数

    如何查看一个avi文件的播放帧率?和帧数 右键属性,详细信息: 如何查看avi文件的帧数? 拖拽到imageJ中,在左上角就可以看到:

  2. javascript实现一个自制网页音乐播放器

    序 接触简书也有一段日子了,这中间的时光还是比较轻松加愉快的,那种可以和他人分享知识的欣喜和愉悦的确是非常棒.我一向都是觉得专心写自己的文就可以了,不会总是纠结有多少人在看,有多少点击等等.用心写好自 ...

  3. 给大家介绍一个相当好的播放器 J River Media Center 15

    我想比较喜欢折腾的同学们一定试过不少播放器,Kmplayer,QQ影音,射手,千千静听,foobar2000.... 今天给大家介绍一个音质相当不错播放器,不要以为它只能播放音乐,其实它不仅可以播放各 ...

  4. python播放wav文件_python3 写一个WAV音频文件播放器的代码

    环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:ki ...

  5. GStreamer 编写一个简单的MP3播放器

    本文介绍如何使用GStreamer 编写一个简单的MP3播放器. 1,需要使用mad解码插件,因此需要先安装gstreamer0.10-plugins-ugly 2,编写mp3播放器 下面来看看如何利 ...

  6. 完整打造一个多功能音乐播放器项目(初步设想跟酷狗类似)

    本人目前准备利用闲暇时间打造一个完整的音乐播放器项目,主要用于学习及分享!原创不易,转载请注明出处. 这是一个什么样的音乐播放器呢?整体的架构跟酷狗差不多吧,我的方式呢,是一个个组件一个个模块先做好, ...

  7. 自制一个简单的音乐播放器

    这两天刚学完了contentprovider和service组件,就综合下所学的,自制了一个简单的音乐播放器. 代码如下: 主activity代码 public class MainActivity ...

  8. HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)

    用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...

  9. 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

最新文章

  1. 从高耦合到低耦合到底有多远?
  2. SPI 的主模式和从模式
  3. innovation
  4. Python Web开发:开发wsgi中间件
  5. SQL Server中的即时文件初始化概述
  6. 牛客网 ACM模式单行输入输出规范
  7. 神经元细胞分布全身吗,人体神经细胞分布图
  8. web项目防御mysql注入_WEB安全 php+mysql5注入防御(二)
  9. angular写的移动端模板《一》
  10. IT外企那点儿事(12):也说跳槽
  11. 戒浮戒躁!一个“假程序员”的心里话
  12. 基础语法值c++提高编程
  13. 国际标准化组织(Iso)对质量(Quality)的定义
  14. 项目实习(五)网络渗透实验
  15. 题解:luogu P2634 [国家集训队]聪聪可可
  16. 爬虫-解析库的使用-Xpath
  17. ffmpeg推流+NGINX(RTMP)+VLC-QT拉流(Win7)
  18. win10 10016自动重启错误解决记录
  19. firmware linux 解包_路由器固件的解包与打包
  20. 【Rust】我该用什么软件开发 Rust | 常用支持 Rust 的编辑器推荐

热门文章

  1. open-falcon 修改配置文件
  2. 基于springboot智慧物业管理系统(完美运行,数据库源代码,可远程调试)
  3. 喜马拉雅(xm-sign)加密破解
  4. C#实战013:Excel操作-给Excel指定单元格赋值
  5. Arcgis怎么将标注变成分子分母形式
  6. 软件工程——面向对象需求分析方法——知识点总结
  7. 超级计算机应用演示,香港计算机节超级计算机大演示
  8. python之LIST、Tuple、Dictionary用法总结
  9. 多端口天线自动化测试系统,定制化解决方案
  10. 不会画架构图的程序员不是好的技术扛把子,手把手练起来~