最近刚来到一家新公司,接手的第一个项目是做一款教育直播app(教师端),而我负责的是教师端的,也就是推流那个端的.
由于没有接触过这类的项目,怕接入网易云时碰到bug不知道如何解决,所以一段时间内沉浸在电脑的世界里,查找资料,查看直播的原理.
直播的原理我就不在大神面前装来,直接附上本人认为好的博客,他写了3篇,写的非常详细,可认真的研究下:
风从影系列的博客:http://www.jianshu.com/p/7ebbcc0c5df7
网易云视频直播推流端集成步骤:
第一步:当然是注册我们的网易云账号啦,地址是:
http://vcloud.163.com/docs/index.html
第二步:注册好账号后,下载网易云官方的sdk,根据网易云的开发文档进行如下的操作:
a.网易云视频直播所支持的设备是:搭载Android系统的设备,支持的CPU架构:armv7、arm64,系统要求:系统要求:Android 4.2(API 17)及其以上
b.为了不影响直播的进行,最好请在proguard-project.txt文件中添加以下代码:
-keep class com.netease.** { *; }
-keep class jp.co.cyberagent.android.gpuimage.** { *; }
c.我在进行集成用的是网易云的demo,对其进行修改集成到我自己的项目中,所以接下来是下载网易云直播推流demo,地址:
http://vcloud.163.com/download.html
d.开始将资源文件拷贝进我们的项目中,我们要拷贝的东西有下面这些
第一步:将demo中的so库拷到我们自己的jinLibs目录下.
第二步:将.jar文件拷到lib目录下,这里注意网易云时将so库和.jar文件拷到jinLibs这一个文件下,我们这里可以不用这样,按照自己的方式拷贝.
第三步:将我们需要的网易云demo中的activity和布局界面拷贝到我们自己的项目中(你如果觉得麻烦,全拷贝进去,再把不需要的activity和布局界面移除)
e.开始配置我们的清单文件,配置如下:
第一步:权限配置:
<!-- 允许挂载和反挂载文件系统 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 允许程序向外部存储设备写数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序打开网络套接字 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许程序获取网络相关信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 允许程序向外部存储设备写数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序写音频数据 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 允许程序使用PowerManager WakeLocks以防止处理器休眠或者屏幕锁屏 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 允许程序获取Wifi网络状态信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序使用设备的camera -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 允许程序使用闪光灯 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- 允许程序获得设备信息 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<!-- 声明程序使用camera和自动对焦功能 -->
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<!-- 声明程序使用OpenGL ES 2.0 -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
第二步:配置我们所需要的网易云demo的activity
<!-- 欢迎页面activity,默认竖屏模式 -->
<activity android:name=".WelcomeActivity" android:label="@string/app_name" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 直播参数设置页面activity,默认竖屏模式 -->
<activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" />
<!-- 直播主页面activity,默认竖屏模式 -->
<activity android:name=".MediaPreviewActivity" android:label="@string/app_name" android:screenOrientation="portrait"/>
配置到这里基本就结束了,我们可以开始将我们的项目对接拷贝进我们项目中的demo的activity,(我只用到了两个activity,一个是mainActivity和MediaPreviewActivity)
mainActivity:我们可以对其进行修改,在这个activity中我们请求我们自己的服务器后台,获取推流地址,而且一些数据的相关操作,也可以再这里面进行,比如直播房间的创建,直播房间的修改等
MediaPreviewActivity:这个activity就是我们直播的界面,网易云这个界面做的很简洁,这样我们就可以再这个界面进行自己的ui配置,添加直播之外的一些逻辑操作(比如:聊天弹幕,礼物等)
哈哈,大致过程就是这样,当然还有些小问题,这就要认真看下网易云官方文档啦.