使用阿里云实现简单的直播

来源:互联网 发布:win7重装网络协议 编辑:程序博客网 时间:2024/06/14 05:30

先说点废话, - -!最近懒癌犯了,都特么俩月没写东西了,是不是要废了?不过确实项目面临上线,时间也有点紧,经常加班,而且!!在这个紧要关头,经理说要加一个简单的直播模块,不要太华丽的那种,只要能实现:一边播,另一边能看就行。说:用阿里云的。
于是乎,我就去官网上下载了Demo以及SDK等瞅了瞅。传送门:https://help.aliyun.com/document_detail/45270.html?spm=5176.product29949.6.667.YZNFdd
说到直播,因为以前也没接触过,只知道点皮毛,据我理解就是一个推拉流的过程。一方进行直播推流,另一方进行拉流观看。在项目中整合了直播模块后,现在看来貌似理解的还算正确。 - -!
官网中的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格式的,只能借助阿里云提供的播放器来观看直播。
首先,需要导入相应的sdk,下载官网demo后,里面libs文件夹下有个AliyunPlayer.arr,我们同样放到我们自己项目的libs里,然后

//配合加载aar资源库使用repositories {    flatDir {        dirs 'libs'    }}

最后dependencies中:

compile(name: 'AliyunPlayer', ext: 'aar')

里面的核心类,当然就是PlayerActivity啦!
其实核心代码也就这一句 - -!

mPlayer.prepareAndPlay("LiveUrl");//设置播放地址

这个LiveUrl就是后台返给你的观看直播的地址~至于观看直播的界面效果可以随便修改自定义成你们自己需要的,具体参考Demo,Over~~~~

原创粉丝点击