SkeyeLive是OpenSKEYE开源流媒体团队开发的一个集采集,编码,RTSP/RTMP推流和流媒体RTSP服务于一身的通用库,目前支持Windows,Android平台,通过SkeyeLive我们就可以避免接触到稍显复杂的音视频源采集,编码和流媒体推送以及RTSP/RTP/RTCP服务流程,只需要调用SkeyeLive的几个API接口,就能轻松、稳定地把流媒体音视频数据推送给SkeyeSMS服务器以及发布RTSP服务,RTSP服务支持组播和单播两种模式,可用于同屏直播,延时在300ms以内。

libSkeyeLive API接口说明:

· SkeyeLive_Create

接口声明:

LIB_SKEYELIVE_API SKEYELIVE_HANDLE SkeyeLive_Create();

接口说明:
创建一个SkeyeLive实例句柄,并返回,在功能模块接口调用时都要用到,一个句柄代表一个实例,该函数可以多次调用,用SkeyeLive_Release接口进行销毁。

· SkeyeLive_Release

接口声明:

LIB_SKEYELIVE_API void SkeyeLive_Release(SKEYELIVE_HANDLE handler);

接口说明:
销毁一个由SkeyeLive_Create()创建的实例;
参数说明:
handler: [IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄

· SkeyeLive_StartCapture

接口声明:

LIB_SKEYELIVE_API int SkeyeLive_StartCapture(SKEYELIVE_HANDLE handler, SOURCE_TYPE eSourceType, int nCamId, int nAudioId,  SKEYELIVE_HANDLE hCapWnd, int nEncoderType,int nVideoWidth=640, int nVideoHeight=480, int nFps=25, int nBitRate=2048, char* szDataType = "YUY2",  //VIDEO PARAMint nSampleRate=44100, int nChannel=2 );

接口说明:
开始一个数据源的采集,并初始化编码器;采集成功返回1,采集失败返回负值,正在采集返回0;
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄
eSourceType:[IN] 数据源类型,参考以下数据结构:
typedef enum tagSOURCE_TYPE
{
SOURCE_LOCAL_CAMERA = 0,//本地音视频
SOURCE_SCREEN_CAPTURE =1,//屏幕捕获
SOURCE_FILE_STREAM = 2, //文件流推送(mp4,ts,flv???)
SOURCE_RTSP_STREAM=3,//RTSP流
SOURCE_RTMP_STREAM=4,//RTMP流
// Any other Source to push

}SOURCE_TYPE;

nCamId:[IN] 本地DShow视频采集口ID,eSourceType==SOURCE_LOCAL_CAMERA 时有效,从0开始,,小于0标示为不起用;该ID可以通过SkeyeLive_GetCameraList()接口函数枚举,通过顺序获取;

nAudioId:[IN] 本地DShow音频采集口ID,eSourceType==SOURCE_LOCAL_CAMERA 时有效,从0开始,小于0标示为不起用;该ID可以通过SkeyeLive_GetCameraList()接口函数枚举,通过顺序获取;

hCapWnd:[IN] HWND窗口句柄,用于显示预览采集的视频源;
nEncoderType:[IN] 编码类型,
0=默认编码器(效率最低,通用性强)
1=软编码(效率高,通用性不强)
2=硬件编码(效率最高,通用性最低,需要英伟达独立显卡支持)
参考以下数据结构:
typedef enum tagENCODER_TYPE
{
ENCODER_DEFAULT = 0, //默认编码器
ENCODER_FASTSOFTWARE = 1,//快速软编码
ENCODER_FASTHARDWARE = 2,//快速硬件编码,需要Nvidia显卡支持

}ENCODER_TYPE;

nVideoWidth:[IN] 指定采集视频的宽度

nVideoHeight:[IN] 指定采集视频的高度

nFps:[IN] 指定采集视频的帧率

nBitRate:[IN] 指定编码视频的比特率(码率)

szDataType:[IN] 指定采集数据源的格式, eSourceTypeSOURCE_LOCAL_CAMERA 或者eSourceTypeSOURCE_SCREEN_CAPTURE时有效,目前屏幕采集只支持“RGB24”格式, 摄像机采集支持“YUY2”和“RGB24”格式;

nSampleRate:[IN] 指定音频采集采样率

nChannel:[IN] 指定音频采集通道数 1=单通道 2=双通道

· SkeyeLive_StopCapture

接口声明:

LIB_SKEYELIVE_API void SkeyeLive_StopCapture(SKEYELIVE_HANDLE handler);

接口说明:停止采集
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄

· SkeyeLive_StartPush

接口声明:

LIB_SKEYELIVE_API int SkeyeLive_StartPush(SKEYELIVE_HANDLE handler, PUSH_TYPE pushType, char* ServerIp, int nPushPort, char* sPushName, int nPushBufSize = 1024);

接口说明:开始进行流推送,目前版本支持RTMP推送,如果要同时开启多种流推送需要调用多次该函数,同时停止的时候也需要多次调用SkeyeLive_StopPush()来停止,由参数指定停止哪种类型的流
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄
pushType: [IN] 流推送类型,参考如下数据结构:
typedef enum tagPUSH_TYPE
{
PUSH_NONE = 0,
PUSH_RTSP ,
PUSH_RTMP ,
}PUSH_TYPE;

ServerIp: [IN] 推送的(RTMP, RTSP)流媒体服务器IP
nPushPort: [IN] 推送流的服务器端口
sPushName: [IN] 推送流名称
nPushBufSize : [IN] 推送缓存大小,单位: KB

· SkeyeLive_StopPush

接口声明:

LIB_SKEYELIVE_API void SkeyeLive_StopPush(SKEYELIVE_HANDLE handler, PUSH_TYPE pushType);

接口说明:停止推送
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄
pushType: [IN] 推送流类型,参考如下数据结构:
typedef enum tagPUSH_TYPE
{
PUSH_NONE = 0,
PUSH_RTSP ,
PUSH_RTMP ,
}PUSH_TYPE;

· SkeyeLive_StartServer

接口声明:

LIB_SKEYELIVE_API int SkeyeLive_StartServer(SKEYELIVE_HANDLE handler, int listenport, char *username, char *password,  SKEYELIVE_CHANNEL_INFO_T *channelInfo, int channelNum);

接口说明:开启RTSP流媒体服务发布
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄
listenport:[IN] RTSP服务发布端口
username:[IN] RTSP服务发布流拉流验证用户名,无需验证填空
password:[IN] RTSP服务发布流拉流验证密码,无需验证填空
channelInfo:[IN] 流发布通道信息参数设置,可设置多个通道,一个通道标识一个流,通道数由channelNum指定,通道参数结构SKEYELIVE_CHANNEL_INFO_T说明如下:
typedef struct __SKEYELIVE_CHANNEL_INFO_T
{
int id; //通道号ID
char name[64]; //该通道流名称
int enable_multicast; //是否启用组播
char multicast_addr[36]; //组播IP地址,默认为238.255.255.255
unsigned char ttl; // 组播IP包生存时间(一个包到达目的地之前跳过网络的最大次数)
}SKEYELIVE_CHANNEL_INFO_T;
channelNum:[IN]

· SkeyeLive_StopServer

接口声明:

LIB_SKEYELIVE_API void SkeyeLive_StopServer(SKEYELIVE_HANDLE handler);

接口说明:停止RTSP服务
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄

· SkeyeLive_GetAudioInputDevList

接口声明:

LIB_SKEYELIVE_API SKEYELIVE_DEVICE_LIST_T* SkeyeLive_GetAudioInputDevList(SKEYELIVE_HANDLE handler);

接口说明:枚举音频输入设备,返回值为一个音频输入设备链表,链表由头到尾从0递增就是采集设备的编号ID;
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄

· SkeyeLive_GetCameraList

接口声明:

 LIB_SKEYELIVE_API SKEYELIVE_DEVICE_LIST_T* SkeyeLive_GetCameraList(SKEYELIVE_HANDLE handler);

接口说明:枚举视频采集设备,返回值为一个视频采集设备链表,链表由头到尾从0递增就是采集设备的编号ID;
参数说明:
handler:[IN] SKEYELIVE_HANDLE(void*)类型, 由SkeyeLive_Create()创建的实例句柄

libSkeyeLive库调用流程:

  1. 通过SkeyeLive_Create()创建一个实例,这个实例在其他的所有接口调用时都需要用到;
    2} 功能模块调用,如采集,推流,服务发布等;
  2. 停止功能模块调用;
  3. SkeyeLive_Release()销毁由SkeyeLive_Create()创建的一个实例。

SkeyeLive 调用Demo

SkeyeLive 调用Demo可以在gitee上下载,界面如下图所示:

延时对比:

  1. SkeyeExPlayer多功能播放器:

  2. SkeyePlayer极速播放器

SkeyeLive同屏直播库库功能介绍和接口说明与调用相关推荐

  1. 微信多群直播助手功能介绍

    微信多群直播助手介绍  微信多群直播小助手是特别流行的一种基于微信上进行多群同步直播的技术. 实时转播,支持在上万个微信群内,实时同步转播语音.图片.文字.链接.小视频,小程序.公众号等,使你的内容更 ...

  2. iOS录屏直播(一)初识ReplayKit

    Morris_2019.05.08 本篇主要功能: 认识ReplayKit框架 RPScreenRecorder实现在应用内录屏功能 RPPreviewViewController查看录屏内容 RPB ...

  3. Ios端直播商城源码开发之实现全屏直播功能

    直播商城源码是以直播带货为核心的直播平台,实现了互动连麦.礼物打赏.主播PK.直播评论等直播相关内容,同时还实现了短视频.电商商城.动态广场等功能.今天,我们就直播功能进行分析,看看直播商城源码如何实 ...

  4. 3D虚拟智能直播间全套设备功能介绍

    如何完美地为主播们打造一间跨时空,低成本,"一人顶一支团队"的虚拟直播间呢?z-enjoy3D虚拟智能直播间全套设备就能实现这些,它的组成包括:智能成像仪一对和非常Q的无线九键鼠, ...

  5. Android实现录屏直播(二)需求才是硬道理之产品功能调研

    请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/54254244 Android实现录 ...

  6. 游戏/微课堂录屏软件Camtasia Studio 2023中文版功能介绍及电脑ppt录制微课软件哪个好

    Camtasia Studio 2023是一款屏幕录制和视频剪辑软件,教授课程,培训他人,以更快的速度和更吸引人的方式进行沟通和屏幕分享.使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频 ...

  7. 云课堂直播功能介绍,更贴合在线教育、企业内训的场景应用

    [ 内容原创.图片原创 ] 时间:2018-06-01 较长时间没有更新文章了,是时候放出我的新招了. 云课堂(新版),更贴合在线教育.企业培训场景应用 讲师为什么选用云课堂: 简化讲师发起直播的条件 ...

  8. 直播商城APP功能介绍

    1.直播商城系统开发预约功能 商户开启视频直播购物频道时,可以设置-个直播开启时间点,向系统申请一-个时段进行视频直播的预约,并通过系统的信息推送等方式,将视频直播信息向广大用户进行广播. 2.视频直 ...

  9. 在钉钉上怎么手写_钉钉直播上课可以写字吗_钉钉直播写字板功能介绍_玩游戏网...

    钉钉直播上课已经有很多学校在使用了,这个时候就有人问了,能不能在钉钉上用手写字,在学习资料上做笔记,目前发下来钉钉的很多功能,不过关于写字这个功能暂且还没有,那么想要用写字的方式教学要怎么做呢?这就让 ...

  10. 手机视频直播系统开发关于Js敏感词替换成*功能介绍

    手机视频直播系统开发关于Js敏感词替换成*功能介绍,实现字符串过滤的方式有很多种,每个编程语言都有相应的处理方式,因语言不同,所使用的函数就有所不同,但最终的目的都是为达到用户的绿色上网,及安全上网, ...

最新文章

  1. 对矩阵分解的粗浅理解之LU分解
  2. python读取大文件-使用Python读取大文件的方法
  3. 柳编产业临沭谋定转型升级 农民丰收节交易会技能兴鲁
  4. cs硕士妹子找工作经历【阿里人搜等互联网】
  5. 汽车防撞实时语音播报仪设计
  6. 《父亲家书》终篇:来京探望儿子之后
  7. php修改学生信息代码_PHP程序员从入门到佛系第二十八弹:PHP $_POST 变量
  8. linux内存布局和地址空间布局随机化(ASLR)下的可分配地址空间
  9. html js关闭浏览器,js关闭页面(兼容浏览器)
  10. ffmpeg 解码b帧_ffmpeg 解码h264数据丢帧
  11. 数模美赛准备——我的第一个LaTex文档
  12. 【通信】基于量子密钥分发密钥率仿真含Matlab源码
  13. 基于ANSYS-APDL的简单静力学分析示例(悬臂梁)
  14. FLV在线flash播放器JW PLAYER
  15. 产品周报第26期|富文本编辑器新增预览功能;博客首页增加上次阅读频道记录……
  16. 手机Camera理论
  17. 利用递归查询部门表,以树(tree)的结构展示返回给前端出来,一般都要有这种需求的
  18. 使用R语言画火山图详细步骤
  19. 概论第7章_参数估计_点估计的评价标准_相合性_无偏性_有效性
  20. Android8.0以上打开相机并裁剪图片

热门文章

  1. mssql数据库和Oracle数据库注入
  2. linux监控系统catic,网络设备监控-Catic添加H3C的监控图解
  3. 用k-mer分析进行基因组调查:(六)用KmerGenie一步实现
  4. 小众绿软|媒体:Soprano Audio Player v1.60
  5. Vs2008调试慢的问题
  6. 隐枚举法求解0-1整数规划
  7. 百合网“免费”革命 一场饮鸩止渴的大戏
  8. 『HDU 5745』La Vie en rose
  9. ETS 题库 c java_最新ETS阅读真题56篇完整版(TPO+ETS在线试题+官方模拟题+OG)
  10. OpenHarmony开源鸿蒙学习入门-应用开发之使用eTS语法示例项目讲解