前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >低延时、高效率、低丢包的同屏直播软件SkeyeLive接口说明文档

低延时、高效率、低丢包的同屏直播软件SkeyeLive接口说明文档

原创
作者头像
Openskeye
发布2023-04-28 15:28:46
7750
发布2023-04-28 15:28:46
举报

SkeyeLive是OpenSKEYE开源流媒体团队开发的一款功能丰富的开源PC端流媒体推流拉流直播软件项目,目前支持Windows、Android版本,后续将支持ios版本,其中Windows版本的SkeyeLive支持多种源接入,包括Windows摄像头、麦克风、扬声器、RTSP摄像机、屏幕桌面等,采集后经过264、265软硬件编码、推送到内置SkeyeLive流媒体服务进行转发;

同时SkeyeLive还支持通过TCP/KCP/RDP等协议分发直播流,进行显示、播放,非常稳定、易用,用户可以基于SkeyeLive项目,开发类似于课堂直播、商显同屏、视频对讲、远程控制、无纸化会议等项目!

功能接口讲解

程序框架

SkeyeLive主要包括三个模块:采集、推送和直播,主要功能封装管理类Class CSourceManager中实现,接口非常简单,各模块分别提供开始和结束接口函数,方便界面调用;

SkeyeLive服务端调用接口头文件:skeyelive.h


采集模块

采集分为音频和视频采集,音频采集分为麦克风和扬声器采集,视频采集又分为摄像头和屏幕采集;

摄像头采集接口API接口主要有:

  1. 获取有效的相机设备列表函数,返回相机设备列表 /** * @brief 获取有效的相机设备列表 * @return 相机设备列表 std::list<skeye_live::CameraDevice> */ static std::list<skeye_live::CameraDevice> availableCameras(); /** * @brief 开始采集相机 * @param device 要采集的相机设备{使用 @link availableCameras() @endlink 获取} * @param settings 相机配置 * @param x 放置相机的x坐标 * @param y 放置相机的y坐标 * @param width 放置相机的宽度{-1则使用相机设备的宽度} * @param height 放置相机的高度{-1则使用相机设备的高度} */ void startCaptureCamera(const skeye_live::CameraDevice &device, const skeye_live::CameraSettings &settings , int x = 0, int y = 0, int width = -1, int height = -1);
  2. 开始采集相机视频数据
  3. 停止采集相机 /** * @brief 停止采集相机 */ void stopCaptureCamera();

屏幕采集接口API接口主要有:

  1. 获取有效的屏幕设备列表/** * @brief 获取有效的屏幕设备列表 * @return 屏幕设备列表 std::list<skeye_live::ScreenDevice> */ static std::list<skeye_live::ScreenDevice> availableScreens();
  2. 开始采集屏幕 /** * @brief 开始采集屏幕 * @param device 要采集的屏幕设备{使用 @link availableScreens() @endlink 获取} */ void startCaptureScreen(const skeye_live::ScreenDevice &device);
  3. 停止采集屏幕 /** * @brief 停止采集屏幕 */ void stopCaptureScreen();

音频采集接口API接口主要有:

  1. 获取有效的音频设备列表 /** * @brief 获取有效的音频设备列表 * @return 音频设备列表 std::list<skeye_live::AudioDevice> */ static std::list<skeye_live::AudioDevice> availableAudioDevices(); /** * @brief 开始采集音频输入(麦克风) * @warning 需要 AudioDevice::type == Audio_Input * @param input 音频输入 */ void startCaptureAudioInput(const skeye_live::AudioDevice &input); /** * @brief 停止采集音频输入 */ void stopCaptureAudioInput();
  2. 开始采集音频输入(麦克风)
  3. 停止采集音频输入
  4. 开始采集音频输出(扬声器) /** * @brief 开始采集音频输出(扬声器) * @warning 需要 AudioDevice::type == Audio_Output * @param output 音频输出 */ void startCaptureAudioOutput(const skeye_live::AudioDevice &output); /** * @brief 停止采集音频输出 */ void stopCaptureAudioOutput();
  5. 停止采集音频输出
编码模块

设置音视频编码参数接口API:

  1. 设置直播视频编码参数 /** * @brief 设置直播视频参数 * @param width 画面宽度 * @param height 画面高度 * @param fps 每秒帧数 * @param gop 编码图像组 * @param videoBitRate 视频比特率[单位:kb] * @param videoEncode 视频编码 {@link VideoEncode @endlink} * @param encoderType 编码器类型 {@link ConnectionType @endlink} */ void setLiveVideoParams(int width, int height, int fps, int gop, int videoBitRate, VideoEncode videoEncode, EncoderType encoderType = EncoderType::Type_Software);
  2. 设置直播音频编码参数 /** * @brief 设置直播音频参数 * @param sampleRate 采样率 * @param channels 通道数 * @param audioBitRate 音频比特率[单位:kb] * @param audioEncode 音频编码 {@link AudioEncode @endlink} */ void setLiveAudioParams(int sampleRate, int channels, int audioBitRate, AudioEncode audioEncode);视频叠加模块
  3. 获取当前视频叠加的覆盖层 /** * @brief 获取覆盖列表 * @return 覆盖列表 std::list<Overlay *> */ std::list<Overlay *> overlays() const; /** * @brief 添加覆盖层 * @param overlay 要添加的覆盖层 */ void appendOverlay(Overlay *overlay); /** * @brief 移除覆盖层 * @param overlay 要移除的覆盖层 */ void removeOverlay(Overlay *overlay);
  4. 添加视频叠加层(支持文本或者图像)
  5. 移除视频叠加层(支持文本或者图像)

设置视频Overlay OSD文本叠加API:

需要注意的是这里的参数设置:

(1) 本地采集的相机视频x,y,宽,高为采集相机视频叠加到屏幕上的矩形位置;

(2) 本地音频采样率默认为系统音频默认采样率,设置在SkeyeLive的采样率为经过重采样出来的,音频默认位宽为32位浮点(FLT);

(3) 视频叠加Overlay覆盖层支持文本和图像叠加,视频叠加层添加和移除可在SkeyeLive运行过程中调用;


推流服务模块

推送则显得异常简单,直接调用原生的SkeyeLive服务API接口,即可实现:

  1. 开启skeyelive流媒体服务推流 /** * @brief 开启流媒体服务 * @param ip 监听IP地址 * @param port 监听端口 * @return int { 0: success } */ int startServer(const std::string &ip = "0.0.0.0", int port = 8432); /** * @brief 停止流媒体服务 */ void stopServer();唯一需要注意的是推送ip地址可以绑定本地ip,或者设置成"0.0.0.0"标识为绑定所有网卡进行流媒体分发。
  2. 停止skeyelive流媒体服务推流

SkeyeLive源码下载:https://gitee.com/visual-opening/skeylive

SkeyeLivePlayer源码下载:https://gitee.com/visual-opening/skeyeliveplayer

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能接口讲解
    • 程序框架
      • 采集模块
      • 编码模块
      • 推流服务模块
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档