C/C++系列之如何实现一个avi格式的播放器
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格式的播放器相关推荐
- 如何查看一个avi文件的播放帧率?和帧数
如何查看一个avi文件的播放帧率?和帧数 右键属性,详细信息: 如何查看avi文件的帧数? 拖拽到imageJ中,在左上角就可以看到:
- javascript实现一个自制网页音乐播放器
序 接触简书也有一段日子了,这中间的时光还是比较轻松加愉快的,那种可以和他人分享知识的欣喜和愉悦的确是非常棒.我一向都是觉得专心写自己的文就可以了,不会总是纠结有多少人在看,有多少点击等等.用心写好自 ...
- 给大家介绍一个相当好的播放器 J River Media Center 15
我想比较喜欢折腾的同学们一定试过不少播放器,Kmplayer,QQ影音,射手,千千静听,foobar2000.... 今天给大家介绍一个音质相当不错播放器,不要以为它只能播放音乐,其实它不仅可以播放各 ...
- python播放wav文件_python3 写一个WAV音频文件播放器的代码
环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:ki ...
- GStreamer 编写一个简单的MP3播放器
本文介绍如何使用GStreamer 编写一个简单的MP3播放器. 1,需要使用mad解码插件,因此需要先安装gstreamer0.10-plugins-ugly 2,编写mp3播放器 下面来看看如何利 ...
- 完整打造一个多功能音乐播放器项目(初步设想跟酷狗类似)
本人目前准备利用闲暇时间打造一个完整的音乐播放器项目,主要用于学习及分享!原创不易,转载请注明出处. 这是一个什么样的音乐播放器呢?整体的架构跟酷狗差不多吧,我的方式呢,是一个个组件一个个模块先做好, ...
- 自制一个简单的音乐播放器
这两天刚学完了contentprovider和service组件,就综合下所学的,自制了一个简单的音乐播放器. 代码如下: 主activity代码 public class MainActivity ...
- HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)
用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...
- 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
最新文章
- 从高耦合到低耦合到底有多远?
- SPI 的主模式和从模式
- innovation
- Python Web开发:开发wsgi中间件
- SQL Server中的即时文件初始化概述
- 牛客网 ACM模式单行输入输出规范
- 神经元细胞分布全身吗,人体神经细胞分布图
- web项目防御mysql注入_WEB安全 php+mysql5注入防御(二)
- angular写的移动端模板《一》
- IT外企那点儿事(12):也说跳槽
- 戒浮戒躁!一个“假程序员”的心里话
- 基础语法值c++提高编程
- 国际标准化组织(Iso)对质量(Quality)的定义
- 项目实习(五)网络渗透实验
- 题解:luogu P2634 [国家集训队]聪聪可可
- 爬虫-解析库的使用-Xpath
- ffmpeg推流+NGINX(RTMP)+VLC-QT拉流(Win7)
- win10 10016自动重启错误解决记录
- firmware linux 解包_路由器固件的解包与打包
- 【Rust】我该用什么软件开发 Rust | 常用支持 Rust 的编辑器推荐