组件功能定义 

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相关推荐

  1. 百度地图demo基础组件演示

    基础演示案例一则: 因为此案例仅作为个人演示用,暂不公开百度开发者相关信息!敬请谅解. 效果图: 代码如下: <!DOCTYPE html> <html> <head&g ...

  2. 斯坦福iOS7公开课4-6笔记及演示Demo

    1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不 ...

  3. 移动端也能兼容的web页面制作1:MDBootstrap演示Demo运行演示

    [ 导读 ] MDBootstrap 是基于 Vue.js 开发的一套前端框架,拥有美观大气的界面效果,友好的交互体验,更棒的是对于移动端也有很好的兼容性.先给大家看下演示 demo 的运行,后面将围 ...

  4. Java案例:Swing常用组件演示

    文章目录 一.Swing (一)Swing概述 (二)Swing与AWT的关系 (三)Swing组件继承关系图 二.Swing常用组件演示 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建J ...

  5. 历代显卡精彩演示DEMO赏析点评之NV篇

    1 无论ATI还是NVIDIA,每次有新显卡发布都会同时公布一个或者多个美轮美奂的演示DEMO.这些演示DEMO的设计初衷就是通过完美的3D效果征服每一位观众,让大家对新显卡的性能及技术充满憧憬和期待 ...

  6. xgplayer.js 西瓜播放器 - 字节跳动团队出品的免费开源 HTML5 视频播放组件,内置解析器、也能节省流量

    一个功能强大,符合国内视频播放业务的 web 视频播放组件,由西瓜视频技术团队官方出品. 关于西瓜播放器 西瓜播放器 (xgplayer.js) 不是一个看片软件,而是一个 Web 开发上的视频播放器 ...

  7. vue-dplayer 视频播放组件介绍

    目录 前言 安装 使用 1. main.js中全局引入 2. vue 页面引入 3. 属性配置 前言 年后开工第一帖,新的一年更要加油鸭~ 最近在整理视频播放组件的资料,发现dplayer组件,除了完 ...

  8. Framework7中文教程-中文演示DEMO

    中文DEMO UI组件对照表 中文DEMO Framework7中文演示DEMO 本DEMO将官方DEMO中列表UI组件名和部分内页整理成了汉字,方便使用时查找,可以在Chrome的控制台查看效果: ...

  9. 【camera】自动泊车-视觉车位检测相关资料汇总(论文、数据集、源代码、相关博客、演示demo)(1)

    [camera]自动泊车-视觉车位检测相关资料汇总(论文.数据集.源代码.相关博客.演示demo)parking slot detection 论文 2020论文 2019论文 2018论文 2017 ...

最新文章

  1. 使用Relay部署编译ONNX模型
  2. 亿级流量治理系列:常用的限流算法有哪些?
  3. 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
  4. 通过MATLAB将数据转化为mif文件,供Quartusii软件的ROM核读取调用
  5. iOS App版本号compare
  6. java callable 详解_Java多线程详解(七)------Callable接口介绍
  7. 游戏在ios和android,陈情令手游ios和安卓互通吗 ios和安卓能一起玩吗
  8. mysql事件定时_MySQL事件(定时任务)
  9. Linux编程练习 --多线程4--条件变量
  10. 结构体与共用体05 - 零基础入门学习C语言57
  11. oracle约束或语句,oracle、DB2、Informix常用约束语句
  12. [phaser3入门探坑]使用phaser3制作山寨马里奥
  13. 短信验证-SMSSDk(Mob开发平台 )
  14. 解析大型Java项目架构演进(以淘宝网为例)
  15. 程序员月入好几万?10年老程序员告诉你真实的情况!!
  16. MiniGUI中的几个画线函数
  17. 小米路由器刷Xiaomi Mi WiFi Mini openwrt
  18. 项目一:认识Linux操作系统
  19. 1348. 推文计数
  20. STM32F4系列ADC最大转换速率及操作条件(以STM32F407ZGT6为例)

热门文章

  1. Kaggle API下载与安装
  2. java定义geinfo_Java ResourceInfo類代碼示例
  3. DirectUI简介
  4. 索尼3D环境感知研究解析,目标是让所有设备“理解世界”
  5. Blockly编程:用Scratch制作游戏愤怒的小牛(小鸟)
  6. 古月居 ROS 21 讲1
  7. 使用虚拟磁盘管理软件详细介绍
  8. C语言实现简单电话簿(注释版)
  9. Flutter 入门经典
  10. 赶集网招聘信息数据分析与可视化