多功能视频播放组件演示Demo
组件功能定义
1.支持普通视频文件播放、快进(16x)放慢(1/8x),速率可调
2.支持单帧向前向后、支持帧号、百分比定位;
3.支持大华录像下载文件以及丢失时间戳视频文件;
4.自适应视频图像格式、图像大小,支持Direct硬件显示加速;
组件接口
/*------------------------------------------------*/ // 名称:本地视频播放器接口库 /*------------------------------------------------*/ // 版本:VER 1.0.0.0 // 日期:2013年4月18日 14时54分 // 作者:钱廷柱 // 说明: // 功能: // 1.支持普通视频文件播放、快进(16x)放慢(1/8x),速率可调 // 2.支持单帧向前,向后(不完整)、支持帧号、百分比定位; // 3.支持大华录像下载文件以及丢失时间戳视频文件; // 4.自适应视频图像格式、图像大小,支持Direct硬件显示加速; // // 遗留问题: // 1.接口功能未进行完整测试,对主接口函数也是简单测试; /*------------------------------------------------*/ /*------------------------------------------------*/ // 修订:VER 1.0.0.2 // 日期:2013年4月19日 2时1分 // 作者:钱廷柱 // 说明: // 1.调整优化后定位逻辑,修正定位帧不准问题 // 2.定帧定位可能不准的问题 // 3.修改SDK头文件部分接口函数返回参数定义,使用int数据类型代替unsigned int类型 // 4.实现对象部分逻辑优化 /*------------------------------------------------*/ /*------------------------------------------------*/ // 修订:VER 1.0.0.2 // 日期:2013年4月22日 15时13分 // 作者:钱廷柱 // 说明: // 1.BUG 打开文件后,立即播放,播放失败。 // 2.调整定位帧策略,若当前帧与定位目标帧号相同时返回成功(旧版本返回失败) // 3.BUG 无法恢复正常播放速率 /*----------------------------------------------*//*------------------------------------------------*/ // 修订:VER 1.0.0.2 // 日期:2013年4月23日 9时56分 // 作者:钱廷柱 // 说明: // 1.BUG 设置播放范围返回失败问题。 /*----------------------------------------------*//*------------------------------------------------*/ // 修订:VER 1.0.0.3 // 日期:2013年4月27日 17时23分 // 作者:钱廷柱 // 说明: // 1.自适应窗口大小,即在窗口缩放时自动调整视频渲染大小(窗口重绘时调用Player_Refresh()) // 2.打开视频文件时添加播放结束事件回调,让组件在播放结束后向调用者报告结束事件 // 3.BUG 重复调用SDK_Init和重复调用SDK_UnInit内存泄漏问题 /*----------------------------------------------*/#ifndef _VVPLAY_HEAD_INCLUDE_ #define _VVPLAY_HEAD_INCLUDE_#ifndef VVPLAY_SDK_API #define VVPLAY_SDK_API __declspec(dllimport) #endif//播放状态 enum Playing_Status {STATUS_EXIT, //线程退出STATUS_START, //播放正在进行STATUS_PAUSE, //播放暂停STATUS_STEP_FORWARD, //播放下一帧STATUS_STEP_BACKWARD, //播放前一帧STATUS_STOP, //播放停止,但线程未终止,只是定位到首帧STATUS_FAST, //加速播放STATUS_SLOW //慢速播放 };enum DRAW_ENGINE {ENGINE_DEFAULT=-1,ENGINE_DIRECT3D,ENGINE_SOFTWARE };/*----------------------------------------------*/ // 接收参数: Playing_Status status //当前播放状态 // 接收参数: unsigned int frame_pos //当前帧 // 接收参数: unsigned int frame_total //总帧 // 接收参数: void * context //回调上下文句柄 // 功能描述: 播放回调函数原形 /*----------------------------------------------*/ typedef void (__stdcall *PLAY_CALLBACK)(Playing_Status status, unsigned int frame_pos, unsigned int frame_total, void* context);/*----------------------------------------------*/ // 接收参数: const char* filename //播放结果文件名 // 功能描述: 播放回调函数原形 /*----------------------------------------------*/ typedef void (__stdcall *PLAY_EndFileCALLBACK)(const char* filename);#ifdef __cplusplus extern "C" { #endif//播放器句柄 #define INVALID_PLAYER_HANDLE (0) //无效句柄typedef void* HPLAYER;/*----------------------------------------------*/ // 初始化函数 /*----------------------------------------------*//*----------------------------------------------*/ // 函数名称: SDK_Init // 函数参数: void // 返 回 值: int // -1:失败 0:成功 // 功能描述: 初始化环境(必须在应用程序使用SDK函数前调用) /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall SDK_Init(void);/*----------------------------------------------*/ // 函数名称: SDK_UnInit // 函数参数: void // 返 回 值: void // 功能描述: 清理初始化环境,释放所有资源(应用程序退出时必须调用,否则会有内存泄漏) /*----------------------------------------------*/ VVPLAY_SDK_API void __stdcall SDK_UnInit(void);/*----------------------------------------------*/ // 播放器管理函数 /*----------------------------------------------*//*----------------------------------------------*/ // 函数名称: Player_Create // 函数参数: HWND hwnd //绑定的窗体句柄 // 函数参数: DRAW_ENGINE drawengine //绘制引擎类型 支持DIRECT加速和软件加速两种模式 // 返 回 值: HPLAYER //返回创建成功后的播放器句柄,如果失败则返回0 // 功能描述: 创建播放器 并绑定窗体 /*----------------------------------------------*/ VVPLAY_SDK_API HPLAYER __stdcall Player_Create(HWND hwnd, DRAW_ENGINE drawengine);/*----------------------------------------------*/ // 函数名称: Player_Refresh // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: void // 功能描述: 刷新视频显示窗口 在WINDOWS PAIN事件中调用该函数重绘 /*----------------------------------------------*/ VVPLAY_SDK_API void __stdcall Player_Refresh(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_Destroy // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: void // 功能描述: 销毁播放器 在程序退出时使用销毁对象 /*----------------------------------------------*/ VVPLAY_SDK_API void __stdcall Player_Destroy(HPLAYER hplayer);/*----------------------------------------------*/ // 播放器控制函数 /*----------------------------------------------*//*----------------------------------------------*/ // 函数名称: Player_OpenVideo // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: const char * lpfilename //打开文件名(完整路径) // 函数参数: PLAY_CALLBACK cb //回调函数 // 函数参数: void * context //回调上下文 // 函数参数: unsigned int * total_num //打开成功后 返回视频总帧数 // 函数参数: double * framerate //视频帧率 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 打开视频 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_OpenVideo(HPLAYER hplayer, const char* lpfilename, PLAY_CALLBACK cb, void* context, PLAY_EndFileCALLBACK cb_endplay, unsigned int* total_num, double* framerate);/*----------------------------------------------*/ // 函数名称: Player_OpenFile // 函数参数: HPLAYER hplayer //播放器句柄 // 功能描述: 关闭视频 /*----------------------------------------------*/ VVPLAY_SDK_API void __stdcall Player_CloseVideo(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_SetScope // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: unsigned int begin_pos //播放起始帧号 // 函数参数: unsigned int end_pos //播放结束帧号 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 设置播放帧范围 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_SetScope(HPLAYER hplayer, int begin_pos, int end_pos);/*----------------------------------------------*/ // 函数名称: Player_GetScope // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: unsigned int* begin_pos //返回当前播放起始帧号 // 函数参数: unsigned int* end_pos //返回当前播放结束帧号 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 获取当前播放器播放帧范围,如果没有设置播放帧范围,那么将返回1-总帧数 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_GetScope(HPLAYER hplayer, int* begin_pos, int* end_pos);/*----------------------------------------------*/ // 函数名称: Player_Start // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: PLAY_CALLBACK cb //播放进度回调函数,如果设置为0,则不回调 // 函数参数: void* context //回调上下文 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 开始播放,从当前播放帧范围内重新开始播放 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_Start(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_Stop // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 停止播放,并当前帧设置为播放帧范围的起始帧号 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_Stop(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_Pause // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: unsigned int // -1:失败 >=0表示成功,返回值为当前帧号 // 功能描述: 暂停播放 返回当前帧号 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_Pause(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_SeekPos // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: unsigned int // 跳转目标帧号 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 跳转至指定帧号位置(当前播放帧范围) /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_SeekPos(HPLAYER hplayer,unsigned int seek_pos);/*----------------------------------------------*/ // 函数名称: Player_SeekPer // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: double seek_per //跳转目标百分比,值范围为[0.0, 1.0] // 返 回 值: int // -1:失败 0:成功 // 功能描述: 跳转至百分比位置(当前播放帧范围) /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_SeekPer(HPLAYER hplayer,double seek_per);/*----------------------------------------------*/ // 函数名称: Player_SetSpeed // 函数参数: HPLAYER hplayer //播放器句柄 // 函数参数: double speed //播放速率百分比,值范围为[0.125, 16.0] // 返 回 值: int // -1:失败 0:成功 // 功能描述: 设置播放速率 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_SetSpeed(HPLAYER hplayer,double speed);/*----------------------------------------------*/ // 函数名称: Player_ResetSpeed // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: int // -1:失败 0:成功 // 功能描述: 复位播放速率,即以正常的速率播放 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_ResetSpeed(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_Step_Forward // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: unsigned int //跳转成功后的当前帧号,如果为-1则表示跳转失败 // 功能描述: 逐帧播放下一帧 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_Step_Forward(HPLAYER hplayer);/*----------------------------------------------*/ // 函数名称: Player_Step_Backward // 函数参数: HPLAYER hplayer //播放器句柄 // 返 回 值: unsigned int //跳转成功后的当前帧号,如果为-1则表示跳转失败 // 功能描述: 逐帧播放前一帧 由于仅跳转至前一帧时,原始参考帧信息会丢失,所以不能单帧跳,当前设置为向前跳到GOP+1位置 /*----------------------------------------------*/ VVPLAY_SDK_API int __stdcall Player_Step_Backward(HPLAYER hplayer);#ifdef __cplusplus } #endif #endif
View Code
第三方组件
1.ffmpeg;
2.SDL渲染引擎;
演示Demo
VVPlayer Demo下载
转载于:https://www.cnblogs.com/qiantz/archive/2013/05/08/3066573.html
多功能视频播放组件演示Demo相关推荐
- 百度地图demo基础组件演示
基础演示案例一则: 因为此案例仅作为个人演示用,暂不公开百度开发者相关信息!敬请谅解. 效果图: 代码如下: <!DOCTYPE html> <html> <head&g ...
- 斯坦福iOS7公开课4-6笔记及演示Demo
1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不 ...
- 移动端也能兼容的web页面制作1:MDBootstrap演示Demo运行演示
[ 导读 ] MDBootstrap 是基于 Vue.js 开发的一套前端框架,拥有美观大气的界面效果,友好的交互体验,更棒的是对于移动端也有很好的兼容性.先给大家看下演示 demo 的运行,后面将围 ...
- Java案例:Swing常用组件演示
文章目录 一.Swing (一)Swing概述 (二)Swing与AWT的关系 (三)Swing组件继承关系图 二.Swing常用组件演示 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建J ...
- 历代显卡精彩演示DEMO赏析点评之NV篇
1 无论ATI还是NVIDIA,每次有新显卡发布都会同时公布一个或者多个美轮美奂的演示DEMO.这些演示DEMO的设计初衷就是通过完美的3D效果征服每一位观众,让大家对新显卡的性能及技术充满憧憬和期待 ...
- xgplayer.js 西瓜播放器 - 字节跳动团队出品的免费开源 HTML5 视频播放组件,内置解析器、也能节省流量
一个功能强大,符合国内视频播放业务的 web 视频播放组件,由西瓜视频技术团队官方出品. 关于西瓜播放器 西瓜播放器 (xgplayer.js) 不是一个看片软件,而是一个 Web 开发上的视频播放器 ...
- vue-dplayer 视频播放组件介绍
目录 前言 安装 使用 1. main.js中全局引入 2. vue 页面引入 3. 属性配置 前言 年后开工第一帖,新的一年更要加油鸭~ 最近在整理视频播放组件的资料,发现dplayer组件,除了完 ...
- Framework7中文教程-中文演示DEMO
中文DEMO UI组件对照表 中文DEMO Framework7中文演示DEMO 本DEMO将官方DEMO中列表UI组件名和部分内页整理成了汉字,方便使用时查找,可以在Chrome的控制台查看效果: ...
- 【camera】自动泊车-视觉车位检测相关资料汇总(论文、数据集、源代码、相关博客、演示demo)(1)
[camera]自动泊车-视觉车位检测相关资料汇总(论文.数据集.源代码.相关博客.演示demo)parking slot detection 论文 2020论文 2019论文 2018论文 2017 ...
最新文章
- 使用Relay部署编译ONNX模型
- 亿级流量治理系列:常用的限流算法有哪些?
- 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
- 通过MATLAB将数据转化为mif文件,供Quartusii软件的ROM核读取调用
- iOS App版本号compare
- java callable 详解_Java多线程详解(七)------Callable接口介绍
- 游戏在ios和android,陈情令手游ios和安卓互通吗 ios和安卓能一起玩吗
- mysql事件定时_MySQL事件(定时任务)
- Linux编程练习 --多线程4--条件变量
- 结构体与共用体05 - 零基础入门学习C语言57
- oracle约束或语句,oracle、DB2、Informix常用约束语句
- [phaser3入门探坑]使用phaser3制作山寨马里奥
- 短信验证-SMSSDk(Mob开发平台 )
- 解析大型Java项目架构演进(以淘宝网为例)
- 程序员月入好几万?10年老程序员告诉你真实的情况!!
- MiniGUI中的几个画线函数
- 小米路由器刷Xiaomi Mi WiFi Mini openwrt
- 项目一:认识Linux操作系统
- 1348. 推文计数
- STM32F4系列ADC最大转换速率及操作条件(以STM32F407ZGT6为例)