高起播低延时RTSP网页无插件流媒体播放器EasyPlayer-RTSP-win播放库接口调用说明

本文主要是介绍高起播低延时RTSP网页无插件流媒体播放器EasyPlayer-RTSP-win播放库接口调用说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求分析

一般对于一个播放器,应该支持如下几种显示模式:

  • 等比例,最大化区域显示,不裁剪
  • 等比例,最大区域显示,裁剪
  • 拉伸显示,铺满全屏

要实现这几种显示模式。其实只要对播放控件的布局进行些许调整即可。那EasyPlayer是怎么实现的呢?

应用场景

EasyPlayer-RTSP在多年与VLC的对标过程中,积累了广泛的应用场景,EasyPlayer-RTSP底层与上层全部自主开发,自主知识产权,可以说在RTSP播放器领域,目前最可靠、最可控的当属EasyPlayer-RTSP,可实战测试。

EPT09056.png

EasyPlayer-RTSP-win播放库接口调用说明

libEasyPlayer-RTSP实现对RTSP直播流进行实时采集和解码显示,稳定,高效,低延时;解码可采用intel硬件解码和软件解码两种方式,能实时进行录像和快照抓图,OSD叠加等功能。

API接口函数定义
 int EasyPlayer_Init();

函数说明:
播放器初始化,播放器使用之前调用;
参数说明:
 void EasyPlayer_Release();

函数说明:
播放器资源释放,播放器不再使用以后调用;
参数说明:

int EasyPlayer_OpenStream(const char *url, HWND hWnd, RENDER_FORMAT renderFormat, int rtpovertcp, const char *username, const char *password, MediaSourceCallBack callback, void *userPtr, bool bHardDecode);

函数说明:
播放器开始进行流播放;返回值为当前播放的通道ID,该ID在停止推流时需要用到;
参数说明:

Url:[IN] 字符串类型,表示当前要播放的流地址,Eg: rtsp://127.0.0.1:554/stream.sdp
HWnd: [IN] 窗口句柄类型,表示为当前播放器将显示的窗口的句柄;
renderFormat:[IN] 播放渲染类型,详见RENDER_FORMAT结构;
Rtpovertcp:[IN] 整数型,拉取流的传输模式,0=udp, 1=tcp
Username:[IN] 字符串,访问流的用户名(如果存在)
Password:[IN] 字符串,访问流的用户名(如果存在)
Callback:[IN] 播放器回调音视频数据回调函数
userPtr:[IN] 用户自定义传入数据
bHardDecode:[IN] 是否采用硬件解码 1=是,0=否
void EasyPlayer_CloseStream(int channelId);

函数说明:
播放器停止流播放;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream函数打开流的返回值;
int EasyPlayer_SetFrameCache(int channelId, int cache);

函数说明:
播放器设置当前流播放缓存帧数;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream()函数打开 流的返回值;
cache [IN] 当前通道的流播放设置的缓存的视频帧数,Eg: 缓存10帧,则cache = 10;
int EasyPlayer_SetShownToScale(int channelId, int shownToScale);

函数说明:
播放器按比例进行显示;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream()函数打开 流的返回值;
shownToScale [IN] 0=整个窗口区域显示,1=按比例显示;
int EasyPlayer_SetDecodeType(int channelId, int decodeKeyframeOnly);<不常用>

函数说明:
播放器设置解码类型;分为所有帧解码和只解码关键帧;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream()函数打开 流的返回值;
decodeKeyframeOnly [IN] 0=所有帧解码,1=只解码关键帧;
int EasyPlayer_SetRenderRect(int channelId, LPRECT lpSrcRect);<不常用>

函数说明:
设置视频显示时渲染区域
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream函数打开 流的返回值;
lpSrcRect [IN] 矩形框结构体指针,指向设置渲染区域的矩形结构体;
int EasyPlayer_ShowStatisticalInfo(int channelId, int show);

函数说明:
播放器设置是否显示码流信息;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream()函数打开 流的返回值;
Show [IN] 0=不显示,1=显示;
int EasyPlayer_ShowOSD(int channelId, int show, EASY_PALYER_OSD osd);

函数说明:
播放器设置自定义显示OSD信息;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream()函数打开 流的返回值;
Show [IN] 0=不显示,1=显示;
Osd [IN] osd显示信息填充结构,定义如下:

typedef struct tagEASY_PALYER_OSD
{
char stOSD[1024]; //OSD字幕信息
DWORD alpha; //透明通到0-255
DWORD color; //RGB(0xf9,0xf9,0xf9)
DWORD shadowcolor; //OSD背景颜色RGB(0x4d,0x4d,0x4d) 全为0背景透明
RECT rect; //OSD基于图像右上角显示区域
int size; //OSD字体的大小
}EASY_PALYER_OSD;

注意:osd字幕叠加通过”\r\n“结束符进行换行,一行的长度不能超过128个字节,总的OSD叠加不能超过1024个字节。其中OSD大小设置只有D3D渲染模式才能生效;
int EasyPlayer_SetDragStartPoint(int channelId, POINT pt);<不可用>
函数说明:
参数说明:
int EasyPlayer_SetDragEndPoint(int channelId, POINT pt);<不可用>
函数说明:
参数说明:
int EasyPlayer_ResetDragPoint(int channelId);<不可用>
函数说明:
参数说明:
int EasyPlayer_StartManuRecording(int channelId);
函数说明:
播放器开始将流音视频数据进行录制,录制格式为MP4;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream函数打开 流的返回值;
int EasyPlayer_StopManuRecording(int channelId);
函数说明:
播放器停止录制MP4;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream函数打开 流的返回值;
int EasyPlayer_PlaySound(int channelId);
函数说明:
播放器开始播放音频;
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream函数打开 流的返回值;
int EasyPlayer_StopSound();
函数说明:
播放器停止播放音频;
int EasyPlayer_GetMediaInfo(int channelId, MEDIA_INFO& mediaInfo);
函数说明:
播放器获取流媒体信息;
注意:该函数需要在拉到流信息以后才能准确的返回流媒体信息,否则返回数据均为空值。
参数说明:
channelId [IN] 当前播放的流通道ID,该ID是EasyPlayer_OpenStream()函数打开 流的返回值;
mediaInfo[OUT] 获取的媒体信息结构,参考MEDIA_INFO的声明如下:

typedef struct tagMEDIA_INFO
{unsigned int	video_codec;		/* 视频编码格式 */unsigned char	fps;				/* 视频帧率 */unsigned short	width;				/* 视频宽 */unsigned short  height;				/* 视频高 */unsigned int	audio_codec;		/* 音频编码格式 */unsigned int	sample_rate;		/* 音频采样率 */unsigned int	channels;			/* 音频声道数 */unsigned int	bits_per_sample;	/* 音频采样精度 */unsigned int	reserved1;			/* 保留参数1 */unsigned int	reserved2;			/* 保留参数2 */
}MEDIA_INFO;

这篇关于高起播低延时RTSP网页无插件流媒体播放器EasyPlayer-RTSP-win播放库接口调用说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930877

相关文章

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音