一、简介
最近打算正在做我们公司的项目重构,重构过程中走到了直播的这一块,查阅了很多资料都没有找到合适的很全面的直播流程),像是我这样的技术小猿,在看着老项目的代码的确是一件比较苦恼的事情,打算自己总结一篇真正的直播流程,一般做直播会有两种
第一种(大型互联网公司):
后端和前端都是自己公司进行搭建的
第二种 (微小型,小型公司)
后端前端汇集成一些第三方的直播sdk如现在比较流行的 阿里、腾旭、网易 等等,他们都有自己的直播云平台
那么我们今天就是用阿里的直播sdk来完成一次直播的流程
二、流程(搬砖)
1.简要
- 第一没有阿里云账号的赶快去注册一个,以后购买服务器,域名备案信息在这里面都可以,https://help.aliyun.com/,
- 一些直播的域名地址等配置就不多说 分享一篇别人的文章吧给大家 ->https://www.jianshu.com/p/fe2e9c349ca5\
- 剩下的就是我们做移动端的集成步骤:
2. android端集成流程(https://help.aliyun.com/document_detail/94843.html?spm=a2c4g.11174283.6.855.355e454eNnwQV0)
- 下载sdk
- 下完sdk之后呢,导入sdk相关的so库和jar
- 打开这个文件夹把这里面的jar导入
- 这是我导入之后
- 在model的bulid中defaultConfig下面配置ndk
ndk { abiFilters "armeabi","armeabi-v7a", "x86", "mips", "mips64", "x86_64" }
同级别下面配置
repositories { flatDir { dirs 'libs' } } sourceSets { main { //jni库的调用会到资源文件夹下lib里面找so文件 jniLibs.srcDirs = ['lib'] androidTest.setRoot('tests') } }
这样子简单的配置就好了
三、使用
- 在appliaction 中初始化我们的sdk
AliVcMediaPlayer.init(applicationContext)//
- 连个重要的对象(我只里面设置了一些监听不设置的话也可以)
mAlivcLivePushConfig = new AlivcLivePushConfig(); //配置
mAlivcLivePusher = new AlivcLivePusher(); //直播入口
mSurfaceView.getHolder().addCallback(mCallback);
mSurfaceView.setOnTouchListener(mOnTouchListener);
//对焦,缩放
mDetector = new GestureDetector(mSurfaceView.getContext(), mGestureDetector);
mScaleDetector = new ScaleGestureDetector(mSurfaceView.getContext(), mScaleGestureDetector);
mAlivcLivePushConfig.setResolution(AlivcResolutionEnum.RESOLUTION_540P);
mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_RESOLUTION_FIRST);
mAlivcLivePushConfig.setPreviewOrientation(AlivcPreviewOrientationEnum.ORIENTATION_PORTRAIT);//竖屏推流
mAlivcLivePushConfig.setFps(AlivcFpsEnum.FPS_30); //帧率25
mAlivcLivePushConfig.setAudioSamepleRate(AlivcAudioSampleRateEnum.AUDIO_SAMPLE_RATE_32000);
mAlivcLivePushConfig.setAudioProfile(AlivcAudioAACProfileEnum.AAC_LC);
mAlivcLivePushConfig.setAudioChannels(AlivcAudioChannelEnum.AUDIO_CHANNEL_ONE);
mAlivcLivePushConfig.setCameraType(AlivcLivePushCameraTypeEnum.CAMERA_TYPE_BACK);
mAlivcLivePushConfig.setAudioOnly(false);
mAlivcLivePushConfig.setAutoFocus(true);
mAlivcLivePushConfig.setBeautyOn(false);
mAlivcLivePusher.init(this, mAlivcLivePushConfig);
mAlivcLivePusher.setLivePushNetworkListener(mPushNetworkListener);
mAlivcLivePusher.setLivePushErrorListener(mPushErrorListener);
- 需要一个SurfaceView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<SurfaceView
android:id="@+id/live_surface"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/btn_start"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"/>
</RelativeLayout>
- 推流
mAlivcLivePusher.startPushAysnc("直播流,一般服务端会给");
这就是一个简单地推流,对于一些其他设置可以参考阿里云的开发api进行设置,写的不是很好,如果还有人不是很明白,可以打开demo看一些使用方式,希望大家多多支持