文档章节

安卓手机端搭建直播的基本流程

图玩智能科技
 图玩智能科技
发布于 01/20 09:13
字数 1533
阅读 349
收藏 0

近两年直播热的兴起也带动了直播开发行业的崛起,每个人都想要去吃直播开发这块蛋糕。但这块蛋糕也不是这么容易吃到的,在激烈的市场竞争下,有几个大的直播平台始终占据着市场中较大的份额,也有一些小的公司承受不住冲击倒下,只有拥有高精尖的技术,才能够在市场中拥有一席之地。直播开发不是一件能够容易完成的事情,安卓和苹果对于搭建的要求就不一样,今天我们就先了解一下安卓如何搭建直播系统。

如果一上来就要去搭建一个直播系统,基本是不可能的,首先我们要从总体上了解直播到底是什么。手机直播要实现的就是将手机采集到的视频和音频经过一定的处理后发送到CDN,然后传输到各个终端的过程。主要包含以下过程:

 

一、采集

采集主要包含视频采集和音频采集,涉及到摄像头及麦克风等设备。视频主要是通过摄像头采集,涉及到摄像头的操作和一些参数的设置,很多安卓手机存在兼容性问题,需要较好的处理。音频主要通过麦克风进行采集,有时一些手机为了进行连麦功能要进行回声消除。

二、处理

视频处理。现在直播间中美颜功能一定是标配了,对主播的形象有一个很大的提升,,也可以添加一些好玩的卡通贴纸,也会吸引更多的粉丝去观看。美颜SDK基于人脸识别技术打造,优秀的SDK需要在添加美白磨皮等美颜功能后还不降低清晰度,不会过度磨皮,显得美颜过度,视频失真。目前图片上的美颜功能已经较为成熟,视频美颜功能还需要不断地完善。

音频处理。有时直播间只有主播一人说话的话会显得略有尴尬,这时候就需要一些声音来缓解尴尬,比如笑声或者鼓掌声。主播可以让附加的声音直接播放出来,这样麦克风就可以同时录制主播声音和附加声音,但这种处理存在一个问题就是在主播戴上耳机或者进行回声消除处理的时候,附加声音就不会收录进去。以后针对这个功能还需要有更多的处理。

三、编码

通过摄像头和麦克风我们可以采集到相应的数据,把这些数据直接进行传输的话,占用的带宽会很大,容易造成资源的浪费。这时就需要对数据进行编码处理。目前我们使用的是H264编码标准。H.264拥有较高的编码效率,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG21/8MPEG41/3,且h.264视频画面质量高,容错率高而且在网络传输中所需带宽更少,经济性高。

其次,编码分为软编码和硬编码。软编码采用CPU进行编码,实现简单直接参数调整方便,升级易,但是CPU负载重,性能要比硬编码差一些。硬编码采用非CPU进行编码,性能较高。直播平台如果想要稍高一点的清晰度,一般选择硬编码。编码要在分辨率,帧率,码率,GOP等参数设计上找到最佳平衡点。

对音频进行编码也可以分为软编和硬编两种。软编则下载相应的编码库,写好相应的jni,然后传入数据进行编码。硬编则是使用Android自身提供的MediaCodec

四、打包

数据在传输过程中需要定义一定的格式进行传输,这样传输到对端的时候才可以被正确的解析出来,打包一般需要相应的协议:TCP协议(Transmission Control Protocol )传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP为了保证文件传输的可靠性,给每一个包一个序号,同时序号也保证了从传送到接收端实体包的顺序接收。

RTMP协议、http-hlv协议等都是打包过程中需要用到的协议。

五、差网络处理

好的网络状况下,视频传输流畅,不会堆积音视频造成视频延迟、卡顿,而较差的网络状况下,音视频数据发不出去,就容易造成卡顿延迟,需要我们对音视频进行处理,一般有以下几个方式:缓存区设计、丢帧处理、网络检测、降码率处理。

六、发送

经过各种处理,需要将数据发送出去,这一步较为简单,不论是RTMP还是HTTP-HLV都可以通过TCP建立连接。

以上几个步骤就是Android端搭建一个直播平台的基本流程了,这样看来想要自己搭建一个系统看起来并不太现实,搭建直播系统最简单有效的方式就是委托给专门搭建直播系统的开发公司,可以保证系统从开始搭建到最后运营的稳定流畅,需要的朋友可以联系图玩智能。

© 著作权归作者所有

图玩智能科技
粉丝 0
博文 95
码字总数 101836
作品 0
南京
私信 提问
加载中

评论(0)

Android手机直播系统开发介绍

近两年直播热的兴起也带动了直播开发行业的崛起,每个人都想要去吃直播开发这块蛋糕。但这块蛋糕也不是这么容易吃到的,在激烈的市场竞争下,有几个大的直播平台始终占据着市场中较大的份额,...

直播开发
2018/09/07
0
0
基于EasyNVR摄像机流媒体服务器实现RTSP或Onvif监控摄像头Web无插件化直播监控

版权声明:本文为EasyDarwin开源社区原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiejiashu/article/details/90083926 前言介绍 随着互联网的发展,尤其是移动互联网基于H5、微...

xiejiashu
2019/05/10
0
0
迈绝伦团队工作汇总(22号未发内容补充)

项目负责人:余志恒 up_java后台:无 mz_java后台:完成抢客首页定位功能 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:完成抢客分享页面与提示语的修改 ...

风化的骆驼
2016/12/23
4
0
EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码

前言介绍 在web前端的网页设计中,为了展示出简洁的网页风格和美观的效果,往往会使用弹窗效果在EasyNVR前端页面录像检索功能时,必然会播放录像,如果单独为播放录像文件排一个界面,用户在...

Babosa
2019/06/22
0
0
关于视频直播系统的搭建方案

直播的火爆依旧继续在中国蔓延,搭建一款视频直播系统的需求也越来越多,人们对视频直播系统的功能要求也逐渐增多,在“全民直播”的当下,关于视频直播系统的搭建方案有哪些呢?接下来为大家...

观棋不妤
2017/10/30
23
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring ElasticsearchTemplate 经纬度按距离排序

es实体,用 @GeoPointField 注解,值为:中间逗号隔开,如 29.477000,119.278536(经度, 维度) @Document(indexName = "v_intelligent_store")@Datapublic class IntelligentStore imp......

osc_s752w055
13分钟前
17
0
Spring ElasticsearchTemplate 经纬度按距离排序

es实体,用 @GeoPointField 注解,值为:中间逗号隔开,如 29.477000,119.278536(经度, 维度) @Document(indexName = "v_intelligent_store")@Datapublic class IntelligentStore imp......

osc_l330x9u1
14分钟前
41
0
Spring ElasticsearchTemplate 经纬度按距离排序

es实体,用 @GeoPointField 注解,值为:中间逗号隔开,如 29.477000,119.278536(经度, 维度) @Document(indexName = "v_intelligent_store")@Datapublic class IntelligentStore imp......

osc_kd8rd7b3
15分钟前
18
0
Android Studio开发获取本地时间

实现本地聊天记录功能,用到获取本地时间的函数,感觉比较实用,分享给大家! 1、在相应moudle的java文件夹下建立自己的util文件夹如·: 2、建立DateUtil类 package com.example.junior.uti...

osc_k6latecv
17分钟前
42
0
给 Windows 的终端配置代理

初衷 由于项目开发使用go,所以经常要用到go get,但是吧,terminal下根本没办法下载啊,经常下载三个小时包,写代码一个小时 本质上go get就是在使用git clone吧 迫于无奈,只好找个方式可以在...

osc_ocl8o73l
18分钟前
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部