先说点废话, - -!最近懒了,都俩月没写东西了,不过确实项目面临上线,时间也有点紧,经常加班,而且!!在这个紧要关头,需求要加一个简单的直播模块,不用太华丽的那种,只要能实现:一边播,另一边能看就行。最终决定:用阿里云的。
于是就去官网上下载了Demo以及SDK等瞅了瞅。传送门:https://help.aliyun.com/document_detail/94843.html?spm=a2c4g.11186623.6.1019.4a61334fC18RJV
说到直播,因为以前也没接触过,只知道点皮毛,据我理解就是一个推拉流的过程。一方进行直播推流,另一方进行拉流观看。在项目中整合了直播模块后,现在看来貌似理解的还算正确。 - -!
官网中的Demo也分两个,一个是直播推流的Demo,一个是拉流观看的Demo,需要导入不同的SDK。进入正题:
——————————————————————————————————————————————
推流:首先你需要有一个推流地址,rtmp格式的:
"rtmp://video-center.alivecdn.com/...
后面省略号就不显示了,总之,这个推流地址由后台来提供,你只要需要生成流推送就ok了。
官方推流Demo中的核心代码:
LiveCameraActivity.RequestBuilder builder = new LiveCameraActivity.RequestBuilder()
.bestBitrate(600)
.cameraFacing(AlivcMediaFormat.CAMERA_FACING_FRONT)
.dx(14).dy(14).site(1)
.rtmpUrl("rtmp://video-center.alivecdn.com/...")
.videoResolution(AlivcMediaFormat.OUTPUT_RESOLUTION_360P)
.portrait(false)
.minBitrate(500)
.maxBitrate(800)
.frameRate(30)
.initBitrate(600);
LiveCameraActivity.startActivity(this, builder);
这里面的各种参数配置我都是取的定值,Demo里界面是可以自定义的,由于我们项目暂时要求没那么高,我就全取了默认值,Demo里还有个水印图片啥的,我没添加这个参数,因为完全不需要。需要说明的是这个方法,执行之后,虽然打开了直播的页面LiveCameraActivity,但是还并没有开启真正的直播,真正开启直播的核心代码是LiveCameraActivity中的这些:
private final CompoundButton.OnCheckedChangeListener _PushOnCheckedChange =
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
try
mMediaRecorder.startRecord(pushUrl);//开启直播
} catch (Exception e) {
}
isRecording = true;
} else {
mMediaRecorder.stopRecord();//停止直播
isRecording = false;
}
}
};
看过demo的都应该知道,这个页面中有一个按钮控制的开启和关闭直播,过多不解释。上面的这个方法才是真正意义上的控制直播的开启和关闭。到此为止,推流就算完成了。
导入推流SDK的方法简单说一下:下载官网推流的Demo后,会看到里面的libs和jniLibs,libs下有个alive-live-record的jar包,添加自己项目工程libs下,jniLibs下的armeabi-7a文件夹里的so包也添加到自己项目的jniLibs包里,注意:别忘了配置相关权限和application里初始化so包。具体参考官方Demo吧。
拉流:
拉流的过程,说白了,就跟播放一个url的视频一样,首先,观看直播,需要有一个观看的地址,同样,这个地址也是后台返给我们的,我们不用担心,但是我们Android原生的VideoView是播放不了rtmp格式的,只能借助阿里云提供的播放器来观看直播。传送门:https://help.aliyun.com/document_detail/124711.html?spm=a2c4g.11186623.6.1171.3e306412xzWZ0P
首先,需要导入相应的sdk,下载官网demo后,里面libs文件夹下有个AliyunPlayer.arr,我们同样放到我们自己项目的libs里,然后
//配合加载aar资源库使用
repositories {
flatDir {
dirs 'libs'
}
}
最后dependencies中:
compile(name: 'AliyunPlayer', ext: 'aar')
里面的核心类,当然就是PlayerActivity啦!
其实核心代码也就这一句 - -!
mPlayer.prepareAndPlay("LiveUrl");//设置播放地址
这个LiveUrl就是后台返给你的观看直播的地址至于观看直播的界面效果可以随便修改自定义成你们自己需要的,具体参考Demo,Over~~~
PS:由于本人很久没有开发原生Android啦!所以SDK相关的使用方法可能都已经变更,请去官网(上面的链接我已经更新成最新的SDK地址了,不保证一直有效)参考最新的使用方法~