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

2、Studio build.gradle 配置如下:

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

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

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

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

a.添加权限:

设备支持的版本号

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初始化

(五)、关于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前确保存储、相机、录音机权限均已授权成功;否则请打开权限

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、直播前台切到后台

18、直播后台切回前台

在Activity.onStart()中调用

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

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

2继续推流

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

19、水印相关

//开启水印

RDLiveSDK.registerOSDBuilder(DemoOSDBuilder.class);

//关闭水印

RDLiveSDK.registerOSDBuilder(null);

Public class DemoOSDBuilder extends OSDBuilder{

//设置水印位置

setOSDGravity(int nGravity);

//刷新水印内容

     protected void onRefreshOSDView(View vOSD) {}

}

注混淆:

20、在线直播列表

21、横竖屏录制

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

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

/开始直播录制

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

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

第三步:执行推流

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

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

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

RDLiveSDK.enableCustomData()

第二步:实现接口

com.rd.recorder.ICustomData

设置接口实现:

开启或关闭自定义推流:

//混淆

#自定义推流

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

23、混音播放器

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

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

player.setOnPreparedListener(listener);

player.setOnInfoListener(infolistener);

player.setOnCompletionListener(completlistener);

player.prepareAsync();

24、是否开启混音功能

//设置是否开启混音

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

25、设置混音占比

//设置混音占比0-100

//获取当前混音占比

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

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

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

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(),开始音频回调,播放器接收到画面,可隐藏遮罩部分(防止一开始黑屏))

//onError回调监听主播退出

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

(八)、打包混淆

需要在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协议,支持主流服务器
  • 支持自定义布局
  • 静音 支持实时静音与取消静音
  • 支持横竖屏

 截图

   

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

SDK下载请单击

功能试用:

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

点击下载

关于授权:

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

单击申请试用

开发文档:

点击查看

JAVA接口文档:

点击查看

洽谈咨询:

SDK交流群: 305128688

咨询电话: 4008989105

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

客服邮箱:2637433751@qq.com

Android 视频直播 SDK的更多相关文章

  1. Android 视频编辑 SDK

    Android 视频编辑 SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1 ...

  2. 视频直播SDK-ios版

    IOS视频直播接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x720,6 ...

  3. iOS/Android 视频编辑SDK

    锐动天地为开发者提供短视频编辑.特效.直播.录屏.编解码.视频转换,等多种解决方案,涵盖PC.iOS.Android多平台.以市场为导向,不断打磨并创新技术,在稳定性,兼容性,硬件设备效率优化上千捶百 ...

  4. Android视频直播解决方案(rstp、udp)

    做局域网视频直播有两种方案,通过rstp或udp协议. 1.rstp协议,网络上有个开源项目,基于Android,且这个项目也是一个服务端,里面也集成了http访问页面,可以通过http或者rstp直 ...

  5. 带着问题写React Native原生控件--Android视频直播控件

    最近在做的采用React Native项目有一个需求,视频直播与直播流播放同一个布局中,带着问题去思考如何实现,能更容易找到问题关键点,下面分析这个控件解决方法: 现在条件:视频播放控件(开源的ijk ...

  6. Android视频直播全屏实现

    /** * 添加直播组件 */ @SuppressLint("JavascriptInterface") private void addPlayerLive(final Subj ...

  7. Android视频直播:流媒体服务器搭建

    一.前言 实时视频直播是这两年非常火的技术形态,已经渗透到教育.在线互娱等各种业务场景中.但要搭建一套实时视频直播系统,并非易事,下面针对直播系统的的搭建做一下说明: 1.1 通常的直播系统的技术模型 ...

  8. Android中直播视频技术探究之---采集摄像头Camera视频源数据进行推流(采用金山云SDK)

    一.前言 在之前已经详细介绍了Android中的一种视频数据源:Camera,不了解的同学可以点击进入:Android中Camera使用详解 ,在这篇文章中我们介绍了如何采集摄像头的每一帧数据,然后进 ...

  9. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

    ​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

随机推荐

  1. php 特别的函数

    call_user_func函数和call_user_func_array函数 set_include_path

  2. java 二维码

    在http://www.ostools.net/qr看到了一个生成二维码的工具,于是就产生了一个想法: 为什么自己不做一个二维码的生成和解析工具呢?花了一个多钟的时间,嘿嘿,就做出来啦... 先来看看 ...

  3. PHP 绘图技术

    1.图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,png ..... 区别: gif 图片压缩率高,但是只能显示256色,可能造成颜色的丢失,可以显示动画 jpg/jpeg 图片压缩 ...

  4. js模块化开发——模块的写法

    随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...

  5. Delphi中点击DBGrid某一行获得其详细数据方法

    http://www.cnblogs.com/leewiki/archive/2011/12/16/2290172.html Delphi中点击DBGrid某一行获得其详细数据方法 前提是用ADOTa ...

  6. 数组(Array)资源

    上面的程序中在Java代码中定义了两个数组,Android并不推荐在Java代码中定义数组,因为Androd允许通过资源文件来定义数组资源. Android采用位于/res/values目录下的arr ...

  7. 创建第一个Android应用程序 HelloWorld

    按照博客的进程,今天应该进行程序编写啦,下面让我们开写一个简单的HelloWorld程序. 提示:这里对于如何使用Eclipse创建一个Android程序就不多讲啦,不会的同学可以去查阅相关文档. 程 ...

  8. eclipse开发velocity实例(初学)

    开发环境         Eclipse Java EE IDE for Web Developers.(Version: Helios Service Release 1) jdk1.6.0_07 ...

  9. Linux笔记(十四) - 日志管理

    (1)rsyslogd的服务:查看服务是否启动:ps aux | grep rsyslogd 查看服务是否自启动:chkconfig --list | grep rsyslog 配置文件 : /etc ...

  10. HDU5879(打表)

    Cure Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...