ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Android】使用阿里云直播实现手机直播功能

2021-03-19 18:29:51  阅读:416  来源: 互联网

标签:推流 implementation mAliLiveEngine 阿里 Android 直播 SDK


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

最近公司项目里需要接入手机直播功能,因为之前PC直播用的是阿里云,后台服务器域名等都是部署在阿里云上。所以手机直播也选用了阿里云直播SDK。

一、阿里云视频直播流程

阿里云直播文档
阿里云视频直播流程

  1. 主播通过采集设备采集直播内容后,通过推流SDK推送直播流,视频直播服务通过边缘推流的方式将直播流推送至阿里云直播中心,推送的视频流通过CDN边缘节点进行加速保证上行传输的稳定性。
  2. 视频流推送至阿里云直播中心后,可按需对视频流进行转码、时移、录制、截图等处理。
  3. 处理好的视频流通过CDN内容分发网络,下发至观众的设备中进行播放。移动端的播放设备可以集成阿里云提供的播放器SDK进行开发。
  4. 直播视频除了可以进行转码截图等操作外,还可以进行直播转点播的操作,将录制下来的视频转至点播系统中再进行点播播放和短视频云剪辑。方便直播与短视频内容生产和传播的联动。

前后端使用SDK图
此处展商对应着主播。

二、录制直播推流步骤

1. 集成说明

通过本地依赖方式集成SDK

  1. 下载并解压Android端推流SDK。更多信息,请参见推流SDK。
    新建项目,复制推流SDK文件AliLiveSdk.aar和播放器相关文件到App模块下的libs文件夹中。

  2. 修改工程的build.gradle文件,在allprojects的repositories节点中增加flatDir的设置以及阿里Maven地址。

maven {
    url 'https://maven.aliyun.com/repository/releases'
}
flatDir {
    dirs 'libs'
}
  1. 修改App中的build.gradle文件。
dependencies {
    // 添加对libs文件夹中aar文件的依赖
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}

通过Maven依赖方式集成SDK

  1. 新建项目。
    修改工程的build.gradle文件,在allprojects的repositories节点中增加flatDir的设置以及阿里Maven地址。
maven {
    url 'https://maven.aliyun.com/repository/releases'
}
flatDir {
    dirs 'libs'
}
  1. 修改App中的build.gradle文件,在dependencies节点中增加推流SDK、播放器SDK及Conan的引用。
dependencies {
    // 添加对libs文件夹中aar文件的依赖
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
    // 添加推流SDK的依赖
    implementation 'com.alivc.live:AliLiveSdk:4.0.2'
    // 添加播放器core的依赖
    implementation 'com.aliyun.video.android:core:1.2.2'
    // 添加播放器SDK的依赖
    implementation 'com.aliyun.sdk.android:AliyunPlayer:5.2.3-full'
    // 添加conan的依赖
    implementation 'com.alivc.conan:AlivcConan:1.0.4'
    // 添加artcdemuxer的依赖
    implementation 'com.aliyun.sdk.android:AlivcArtc:5.2.3'
    // 添加netsdk的依赖
    implementation 'com.aliyun.rts.android:RtsSDK:1.5.0'
}
  1. 配置权限
    修改工程的AndroidManifest.xml文件,添加如下权限配置。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. 使用说明

RTMP推流

  1. 创建AliLiveEngine。
//创建RTMP相关配置对象
AliLiveRTMPConfig rtmpConfig = new AliLiveRTMPConfig();
//初始化码率配置
rtmpConfig.videoInitBitrate = 1000;
rtmpConfig.videoTargetBitrate = 1500;
rtmpConfig.videoMinBitrate = 600;
//创建直播推流配置
AliLiveConfig mAliLiveConfig = new AliLiveConfig(rtmpConfig);
//初始化分辨率、帧率、是否开启高清预览、暂停后默认显示图片
mAliLiveConfig.videoFPS = 20;
mAliLiveConfig.videoPushProfile = AliLiveConstants.AliLiveVideoPushProfile.AliLiveVideoProfile_540P;
mAliLiveConfig.enableHighDefPreview = false;
mAliLiveConfig.pauseImage = bitmap;
mAliLiveConfig.accountId = "";
AliLiveEngine mAliLiveEngine = AliLiveEngine.create(PushActivity.this, mAliLiveConfig);
  1. 开始预览。
//创建预览显示窗口
AliLiveRenderView mAliLiveRenderView = mAliLiveEngine.createRenderView(false);
//添加预览显示窗口到布局中
addSubView(mAliLiveRenderView);
//设置预览显示模式
mAliLiveEngine.setPreviewMode(AliLiveRenderModeAuto, AliLiveRenderMirrorModeOnlyFront);
//开始预览
mAliLiveEngine.startPreview(mAliLiveRenderView);
  1. 开始推流。
mAliLiveEngine.startPush(mPushUrl);
  1. 停止推流。
//停止预览
mAliLiveEngine.stopPreview();
//停止推流
mAliLiveEngine.stopPush();
//销毁liveEngine
mAliLiveEngine.destroy();
mAliLiveEngine = null;

具体代码可以参阅推流SDK Demo,查看源码。一些功能参数配置,界面操作都可以参考Demo。简单来说,推流只需要服务器提供推流地址,然后传给推流SDK就行了。

推流失败的情况

  • 错误码12007:推流rtmp链接建立失败
    其他错误可以咨询阿里云sdk开发者(钉钉群32825314)

三、观看直播

后台返回观看直播的地址,一般是rtmp格式的,使用播放器播放即可。也可以使用阿里云的播放器来播放。

总结

使用阿里云直播SDK,安卓端整体接入使用是比较简单的。阿里云文档很详尽,问题沟通方便,有较好的使用体验。

标签:推流,implementation,mAliLiveEngine,阿里,Android,直播,SDK
来源: https://blog.csdn.net/u010689161/article/details/115010116

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有