本文主要介绍了Windows端直播推流SDK的功能和使用方法。包括SDK的主要接口、基本使用流程说明,同时还提供了相关功能的使用示例。旨在帮助开发者更好地理解和应用SDK进行直播推流操作。
Windows推流SDK特性
支持连麦互动和PK互动。
使用视频H.264编码以及音频OPUS\AAC编码。
使用视频H.265编码以及音频OPUS\AAC编码。
支持码控、分辨率、显示模式等自定义配置。
支持多种摄像头相关操作。
支持录屏直播。
支持自定义YUV、PCM等外部音视频输入。
支持多路混流功能。
支持纯音视频推流以及后台推流。
支持背景音乐及其相关操作。
支持自动重连、异常处理。
支持音频3A算法。
增加视频软编、硬编切换逻辑,提升编码模块稳定性。
推流主要接口类列表
类 | 说明 |
AlivcLivePushConfig | 推流初始配置 |
AlivcLivePusher | 推流功能类 |
AlivcLivePusherErrorListener | 错误回调 |
AlivcLivePusherNetworkListener | 网络相关通知回调 |
AlivcLivePusherInfoListener | 推流相关信息回调 |
推流SDK使用流程
基础推流
基础推流的使用流程如下:
步骤 | 描述 |
完成推流基本配置、码率控制配置、分辨率自适应配置等。 | |
初始化SDK、注册推流回调、创建预览视图后可以开始推流。用户可以根据业务需求添加推流控制、设置背景音乐、摄像头、外部音频、动态贴纸等。 | |
如需使用录屏推流,可以使用录屏推流相关的配置。 |
一、配置推流参数
AlivcLivePushConfig可以实现对推流参数的配置,推流配置对应参数都有默认值。基础推流建议采用默认值,即您可以进行简单初始化,不做配置。
推流配置
AlivcLivePushConfig config;
说明如需在推流过程中实时修改参数,请参见AlivcLivePusher提供的属性和方法。
配置码率控制。
码率控制配置可通过有两种模式。
1,通过初始化参数enableBitrateControl控制,true时表示流畅优先,false表示清晰度优先。默认值为true
config.enableBitrateControl = true;
2,自定义码率,通过mMinVideoBitrate,mInitialVideoBitrate,mTargetVideoBitrate参数进行配置,各参数取值如下:
分辨率
初始码率 initialVideoBitrate
最小码率 minVideoBitrate
目标码率 targetVideoBitrate
360P
600
300
1000
480P
800
300
1200
540P
1000
600
1400
720P
1500
600
2000
1080P
1800
1200
2500
分辨率
初始码率 initialVideoBitrate
最小码率 minVideoBitrate
目标码率 targetVideoBitrate
360P
400
200
600
480P
600
300
800
540P
800
300
1000
720P
1000
300
1200
1080P
1500
1200
2200
说明目标码率/最小码率/初始码率如果不进行配置,那么SDK会根据分辨率自动分配合适的码率进行发送,默认配置给摄像头。
配置分辨率自适应。
分辨率自适应即动态调整推流分辨率。开启功能后,当网络较差时会自动降低分辨率以提高视频的流畅度和清晰度。示例代码如下:
config.enableAutoResolution = true;
配置图片推流。
为了更好的用户体验,推流SDK提供了后台图片推流和码率过低时进行图片推流的设置。当SDK退至后台时默认暂停推流视频,只推流音频,此时可以设置图片来进行图片推流和音频推流。例如,在图片上提醒用户主播离开片刻,稍后回来。示例代码如下:
config.mPausePushImagePath = "退后台png图片路径";//设置用户后台推流的图片
二,使用推流SDK推流
AlivcLivePusher为使用推流SDK推流的核心类,提供初始化操作、推流回调、摄像头预览、推流控制、推流过程中的参数调节等功能。
初始化。
在配置好推流参数后,可以使用推流SDK的init方法进行初始化。示例代码如下:
AlivcLivePushConfig config; pusher->init(config);
注册推流回调。
推流回调分为三种:
Info:主要做提示和状态检测使用。
Error:错误回调。
Network:主要为网络相关。
用户通过对应的回调通知,当发生对应的类型的事件时,相应的回调函数被触发运行。示例代码如下:
pusher->setLivePushErrorListener(errorListener); pusher->setLivePushInfoListener(errorListener); pusher->setLivePushNetworkListener(errorListener);
开始预览。
livePusher对象初始化及回调配置完成之后,可以进行开始预览操作。示例代码如下:
pusher->startPreview(view, width, height);
开始推流。
pusher->startPush(url);
设置其他推流控制。
推流控制主要包括开始推流、停止推流、停止预览、重新推流、暂停推流、恢复推流、销毁推流等操作,用户可以根据业务需求添加按钮进行操作。
pusher->stopPush();
三,设置录屏推流(按需)
录屏推流即共享屏幕推流,实现过程为获取共享源列表,然后指定共享源进行推流。具体操作:
获取共享源列表。
pusher->getScreenShareSourceInfo();
开始共享推流。
pusher->startScreenShareByDesktopId(desktopId);
说明desktopId:桌面Id(可通过GetScreenShareSourceInfo接口获取)。
配置指定区域分享时,分享区域最小分辨率为16 x 16,设置区域小于最小分辨率时重置为最小分辨率。
配置指定区域分享时,设置分享区域超过实际桌面分辨率时,将分享整个桌面。
连麦互动推流
Windows推流SDK提供基于RTC的连麦互动能力,以及基于RTC的连麦PK互动能力,用户可以使用推流SDK版本完成主播和连麦观众超低延时(300ms以内)互动,直播连麦相关的功能使用。请参见连麦互动开发指南和主播PK互动开发指南。