Android 视频直播 SDK

时间:2023-03-09 19:12:52
Android 视频直播 SDK

Android 视频直播 SDK接入说明

一、名词解释

分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率。常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等。

帧率:每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。

码率: 数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。

二、申请APPKey 和 APPSecretkey

1、 登录http://www.rdsdk.com/注册用户
2、 登录注册好的用户
3、 进入视频云管理 点击(新增)获取应用的 appkey 、appsecret

三、集成步骤

(一)、运行环境

Android 4.1(api 16)以上;

处理器:双核 1GHz以上CPU(目前只支持ARM CPU, X86、MIPS暂不支持);推荐四核1.2GHz以上CPU

内存:1 GB以上;

(二)、下载并导入SDK

1、导入RdLiveSDK

Android 视频直播 SDK

Android 视频直播 SDK

2、Studio build.gradle 配置如下:

Android 视频直播 SDK

关于arm版本引发的冲突解决办法如下:(重要)

步骤一:sdk library模块新增过滤

Android 视频直播 SDK

步骤二:application模块中过滤 (很重要)

Android 视频直播 SDK

(三)、准备AndroidManifest.xml  (权限,注册Activity)

a.添加权限:

Android 视频直播 SDK

设备支持的版本号

Android 视频直播 SDK

android:targetSdkVersion="23"   Android 6.0请遵循请求权限规范  申请以下权限再调用之前

 

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果不想影响当前项目的AndroidManifest.xml,可以合并RdLiveSDK中的配置,修改project.properties文件如下:

android.library.reference.1=../RdLiveSDK

manifestmerger.enabled=true

(四)、SDK初始化

Android 视频直播 SDK

(五)、关于SDK权限

获取权限

Android 视频直播 SDK

RDLiveSDK.getAuthType();

(六)、直播(确保步骤4已经初始化)

           初始化直播环境

初始化当前直播环境 。推荐在startActivity调用,原因:部分手机省电模式下从后台切回前台会新开进程

RDLiveSDK.onInit(context);

1、直播初始化参数

// 直播画面打开之前配置直播参数(可包含摄像头、输出尺寸、帧码率、是否美颜等)

// 通过此方法设置摄像头方向、是否美颜只在onprepared(RelativeLayout,listener)之前调用有效

//初始化之后设置前后置方向使用RDLiveSDK.switchCamera()、RDLiveSDK.enableBeautify(bEnableBeautify)

RDLiveSDK.setEncoderConfig(LiveConfig);

2、初始化直播界面

/**

* 准备SDK

* @param rlParent

*            用于显示摄像头的父布局

* @param iListener

*            SDK消息Listener

*/

 RdLiveSDK.onPrepare(m_pflPreviewLayout, iListener);

一般用在Activity.onStart()中

3、关于直播摄像头的释放

//用于响应Activity.onDestroy()

  RdLiveSDK.onExit(this);

4、开始、结束直播

/**

* * 开始直播

* @param uidORtmp

*            集成两种直播方式(uid或直播推流地址)

* @param title

*            直接推流方式title可传null,否则title不能为null

*/

RDLiveSDK.startPublish(uidORtmp, title);

//结束直播

RdLiveSDK.stopPublish();

//是否正在直播...

RdLiveSDK.isLiving();

5、关于回调接口

/**

* 打开摄像头成功并且开始预览界面

* @param nResult

*            返回值 >={@link ResultConstants#SUCCESS} 代表成功,否则为失败

* @param strResultInfo

*            具体返回消息

*/

//打开摄像头成功并且开始预览界面

IRecorderListener.onPrepared(int nResult, String strResultInfo);

/**

* 响应直播开始

* @param nResult

*            返回值 >={@link ResultConstants#SUCCESS} 代表成功,否则为失败

* @param strResultInfo

*            具体返回消息

*/

//直播成功的回调

IRecorderListener.onRecordBegin(int nResult, String strResultInfo);

/**

* * 响应获取已录制时间

@param nPosition 已录制时间 (ms)

* @param nRecordFPS 录制帧率

* @param delayed 延迟时间

*/

//获取直播信息,如已直播时长和直播帧率、直播延迟

IRecorderListener.onGetRecordStatus(int nPosition, int nRecordFPS, int delayed);

/**

* 响应直播结束

* @param nResult

*            返回值 >={@link ResultConstants#SUCCESS} 代表成功,否则为失败

* @param strResultInfo

*/

IRecorderListener.onRecordEnd(int nResult, String strResultInfo);

/**

* 录制出现错误

* @param nResult

*            返回值

* @param strResultInfo

*            具体返回消息

*/

IRecorderListener.onRecordFailed(int nResult, String strResultInfo);

/**

* 响应摄像头打开信息

* @param nResult

*            返回值 >={@link ResultConstants#SUCCESS} 代表成功,否则为失败

* @param strResultInfo

*            具体返回消息

*/

//相机打开失败,权限不足

IRecorderListener.onCamera(int nResult, String strResultInfo);

//新增推流重连逻辑接口

/**

* @param nResult

*            {@link ResultConstants#RECONNECTION_PREPARE} 开始重连

*            {@link ResultConstants#RECONNECTION_SUCCESS} 重连成功

*            {@link ResultConstants#ERROR_RECONNECTION_TIMEOUT} 重连超时

* @param msg

*           文本内容

*/

IRecorderListener.onReconnection(int nResult, String strResultInfo);

//Android 6.0 请在调用onprepare前确保存储、相机、录音机权限均已授权成功;否则请打开权限

Android 视频直播 SDK

6、直播关于摄像头相关(必须在onprepare回调之后才有效)

//聚焦

RdLiveSDK.cameraAutoFocus();

// 是否为前摄像像头

RdLiveSDK.isFaceFront(); 

// 切换摄像头

RdLiveSDK.switchCamera();

7、闪光灯(必须在onprepare回调之后才有效)

//获取闪光灯状态

RdLiveSDK.getFlashMode();

//打开闪光灯

RdLiveSDK.setFlashMode(boolean enable);

8、美颜

//是否支持美颜

RdLiveSDK.isBeautifyEnabled();

//打开或关闭美颜
RdLiveSDK.enableBeautify(boolean bEnableBeautify);

9、截图 (必须在listener.onprepared回调之后才有效)

/**

* 当前画面截图

* @param path

*            截图文件路径

* @param width

*            截图宽度

* @param height

*            截图高度

*/

RdLiveSDK.screenshot(path, 480, 640);

/**

* 响应保存截图

* @param nResult

*            返回值 =={@link ResultConstants#SUCCESS} 代表成功,否则为失败

* @param msg

*

*/

IRecorderListener.onScreenShot(int nResult, String path);

10、静音

//设置静音

RDLiveSDK.setMute(boolean mute);

//静音状态

RDLiveSDK.isMute();

11、设置推流重连超时

//设置推流重连超时(单位:毫秒)该方法在开始直播之前调用

RDLiveSDK.setReconnectionTimeOut(int nTimeOut)

12、设置推流超时

//设置推流超时时间(1000到30000毫秒之间)

RDLiveSDK.setApiLiveSetRtmpUploadPacketTimeout(int ntimeOut);

13、开启低配美颜(美颜需Android4.3及以上)

//该方法针对4.3以上,低配置机器(不常用)

RDLiveSDK.enableDeviceLowBeautify(boolean enable);

14、获取当前低配美颜状态

RDLiveSDK.isDeviceLowBeautify();

15、设置美颜等级

//1-5 数字越大等级越高

RDLiveSDK.setBeautifyLevel(int level);

16、获取美颜等级

Int level=RDLiveSDK.getBeautifyLevel();

17、直播前台切到后台

Android 视频直播 SDK

Android 视频直播 SDK

18、直播后台切回前台

在Activity.onStart()中调用

1.获取直播是否暂停的状态

获取是否暂停状态, pausePublish()--->onRestoreInstanceState() 场景:从直播切到后台,到未继续推流之前 为 true;且他时间段为false

Android 视频直播 SDK

2继续推流

Android 视频直播 SDK

isLivingUI :true继续推流,sdk将继续直播

19、水印相关

//开启水印

RDLiveSDK.registerOSDBuilder(DemoOSDBuilder.class);

//关闭水印

RDLiveSDK.registerOSDBuilder(null);

Public class DemoOSDBuilder extends OSDBuilder{

//设置水印位置

setOSDGravity(int nGravity);

//刷新水印内容

     protected void onRefreshOSDView(View vOSD) {}

}

注混淆:

Android 视频直播 SDK

20、在线直播列表

Android 视频直播 SDK

21、横竖屏录制

说明:输出视频的录制方向,内部通过获取屏幕方向得到

//屏幕方向旋转回调,通过回调函数,确定录制方向

Android 视频直播 SDK

/开始直播录制

第一步:锁定屏幕当前的方向(固定输出方向) ,录制结束恢复自动旋转

第二步:设置输出推流的输出尺寸,推流尺寸统一参照竖屏(sdk内部取了屏幕旋转值)

第三步:执行推流

Android 视频直播 SDK

Android 视频直播 SDK

//从后台切回前台时,需要重新锁定屏幕方向

Android 视频直播 SDK

22、自定义推流数据(4.3以上的设备支持)

第一步:检测是否支持该功能:

RDLiveSDK.enableCustomData()

第二步:实现接口

com.rd.recorder.ICustomData

设置接口实现:

Android 视频直播 SDK

开启或关闭自定义推流:

Android 视频直播 SDK

//混淆

#自定义推流

-keep class * implements  com.rd.recorder.ICustomData {*;}

23、混音播放器

Android 视频直播 SDK

(只支持播放本地音乐,支持的音频格式mp3、mp2、 aac、 wma、 wmv、 ac3、 ogg)

此播放器支持混音功能.场景:插上耳机,传输一路音频流到看直播端

player.setOnPreparedListener(listener);

player.setOnInfoListener(infolistener);

player.setOnCompletionListener(completlistener);

player.prepareAsync();

24、是否开启混音功能

//设置是否开启混音

Android 视频直播 SDK

//获取当前是否开启混音

Android 视频直播 SDK

25、设置混音占比

//设置混音占比0-100

Android 视频直播 SDK

//获取当前混音占比

Android 视频直播 SDK

(七)、看直播(支持UID,(RTMP、RTSP两种方式处理逻辑一样)

1、在布局文件中编写直播视频播放控件 通过控件id找到控件

Android 视频直播 SDK

Android 视频直播 SDK

2、检测主播是否退出房间

Android 视频直播 SDK

3、Uid查看直播

//通过Uid获取直播流(参考demo中MainActivity# R.id.mBtnPlayLiving)

RDLiveSDK.getLivingUid(String uid,  RDLiveSDK.ILivingListener listener)

//可以直播流的地址(rtmp://) 不知道直播liveId可传null(liveId由listener返回)

vvPlay.setVideoPath(“<您要观看的视频rtmp>”,liveId);

Url查看直播

//可以直播流的地址(rtmp://)

vvPlay.setVideoPath(“<您要观看的视频rtmp>”);

4、播放器设置

* 是否开启全屏显示(内容会被裁减)默认全屏

true全屏显示部分内容会被裁剪;false 显示全部全部视频内容

vvPlay.enableFullScreen(boolean enable);

5、查看播放器预览模式是否全屏

vvPlay.isFullScreen();

6、播放器回调

/ IMediaPlayer.ANCHOR_PASUING  主播离开(只针对观看UID直播)

//what == IMediaPlayer.MEDIA_INFO_BUFFERING_START (网络视频,开始缓冲)

//what == IMediaPlayer.MEDIA_INFO_BUFFERING_END(缓冲结束)

//what == IMediaPlayer.MEDIA_INFO_AUDIO_RENDERING_START (vvPlay.start(),开始音频回调,播放器接收到画面,可隐藏遮罩部分(防止一开始黑屏))

Android 视频直播 SDK

//onError回调监听主播退出

//what==IMediaPlayer.ANCHOR_EXIT 主    播     退    出

Android 视频直播 SDK

(八)、打包混淆

需要在proguard.cfg文件中添加如下配置项:

-dontwarn  com.rd.**

-keep class com.rd.** { *; }

-dontwarn tv.danmaku.**

-keep class tv.danmaku.** { *; }

#水印

-keepclassmembers class * extends com.rd.recorder.OSDBuilder{

* ;

}

#自定义推流

-keep class * implements  com.rd.recorder.ICustomData {*;}

具体情况

锐动直播SDK android版通过android移动端实时采集视频,同时在拍摄过程中支持多种实时滤镜效果,只要调用视频直播接口,通过3G、4G、WIFI等网络,推流发送给云端流媒体直播系统处理,并通过CDN视频加速分发做现场直播播出,供远程观看,是一款专业级水平的视频直播开发包。同时,在节目直播过程中,直播视频可归档、存储,方便后续回看。视频直播SDK不断优化视频采集和处理能力,让开发者更专注自身业务应用开发和运营。


SDK功能介绍:

1.直播推流

  • 实时美颜
  • 滤镜 内置主流滤镜,支持扩展更多滤镜
  • 协议 RTMP协议,支持主流服务器
  • 编码与设置 支持H264及AAC编码;支持智能硬件编码;支持自定义分辨率、码率、帧率
  • 内置伴音 主播可以高质量卡拉OK及喊麦主持
  • 可定制的水印
  • 人脸识别及装扮 支持人脸识别并内置了一些演示人脸装扮挂件,支持扩展更多
  • 界面可定制 当前已经实现了通用的开源界面,也可根据实际业务进行扩展
  • 云服务器 支持锐动云服务器推流(UID直播推流),也支持使用第三方云服务器(URL直播推流)。
  • 摄像头切换 前、后摄像头*切换,中间无卡顿
  • 静音 支持实时静音与取消静音
  • 支持横竖屏

2.播放器

  • 低延迟
  • 协议 支持RTSP/RTMP协议,支持主流服务器
  • 支持自定义布局
  • 静音 支持实时静音与取消静音
  • 支持横竖屏

 截图

Android 视频直播 SDK Android 视频直播 SDK Android 视频直播 SDK Android 视频直播 SDK

最新SDK下载(以下链接是最新的,github代码会稍有延迟):

SDK下载请单击

功能试用:

下载以下demo应用,可以进行功能试用。

点击下载

关于授权:

www.rdsdk.com 致力于专业的人做专业的事,降低客户的开发时间和开发成本,你只需要支付很少的费用,花上几个小时就能增加直播及回放功能。

单击申请试用

开发文档:

点击查看

JAVA接口文档:

点击查看

洽谈咨询:

SDK交流群: 305128688

咨询电话: 4008989105

客服电话: 15313066905 (周一至周五 9:00-18:00)

客服邮箱:2637433751@qq.com