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

xiaoxiao2021-02-27  158

先说点废话, - -!最近懒癌犯了,都特么俩月没写东西了,是不是要废了?不过确实项目面临上线,时间也有点紧,经常加班,而且!!在这个紧要关头,经理说要加一个简单的直播模块,不要太华丽的那种,只要能实现:一边播,另一边能看就行。说:用阿里云的。 于是乎,我就去官网上下载了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~~~~

转载请注明原文地址: https://www.6miu.com/read-16294.html

最新回复(0)