视频直播整个流程,就是不断把数据采集端的数据编码后推送到流媒体服务器,经CDN加速后,由播放端拉取这些数据进行解码播放。
在手机客户端主要可分为五个步骤:音视频数据采集、音视频效果处理、数据编码、推流到服务器、拉流播放。
(整个过程类似于源源不断送快递,推流端是生产方,生产的货物送到库房(流媒体服务器),由专业的快递公司(CDN),快速送到各个消费者手中(拉流播放端)。没有快递公司当然也能送货,但货物太多、距离太远,送货速度就会慢。)
#.Android客户端的主要工作步骤
1.画面、音频采集
1.1美颜直播使用相机(Camera)采集图像。相关笔记:
Android SurfaceView总结及代码示例_丞恤猿的博客-CSDN博客    
Android GlSurfaceView总结及代码示例讲解_丞恤猿的博客-CSDN博客_glsurfaceview         Android相机(Camera)使用总结及代码示例_丞恤猿的博客-CSDN博客
Android中相机(Camera)画面旋转角度分析:手机摄像头的“正向”、手机画面自然方向、相机画面的偏转角度_丞恤猿的博客-CSDN博客
1.2录屏直播,使用MediaProjection捕获手机屏幕画面。相关笔记:Android 使用MediaProjection+ImageReader捕捉屏幕画面_丞恤猿的博客-CSDN博客
1.3音频数据通过手机麦克风来采集。相关笔记:Android用AudioRecord+MediaCodec采集音频和音频编码 & 音频一些基本概念_丞恤猿的博客-CSDN博客
2.画面、音频加工处理
一般会引入OpenGL来对画面做各种效果处理,如添加水印、美颜、各种特效。可以自研,也可以引入强大的第三方SDK来处理美颜和各种特效。
音频方面,在该阶段,可以加入各种音效处理、如混响、伴奏混音等。
相关笔记:
Android OpenGl ES使用原理总结与代码示例_丞恤猿的博客-CSDN博客
Android OpenGL ES纹理总结、纹理坐标系说明、使用代码示例_丞恤猿的博客-CSDN博客
Android OpenGL-ES FBO(Frame Buffer Object)离屏渲染_丞恤猿的博客-CSDN博客
Android中为线程EGL环境创建及代码示例_丞恤猿的博客-CSDN博客
3.编码压缩
一般使用MediaCodec来进行音视频编码,视频流采用H264格式、音频流采用AAC格式。
相关笔记:     
Android MediaCodec简单总结_丞恤猿的博客-CSDN博客
Android使用MediaCodec进行视频编码 & 视频的一些基础概念介绍_丞恤猿的博客-CSDN博客
Android用AudioRecord+MediaCodec采集音频和音频编码 & 音频一些基本概念_丞恤猿的博客-CSDN博客
4.推流到服务器(或者合成本地视频文件)
一般使用RTMP协议推流到流媒体服务器,相对同类协议,RTMP协议延迟较低(1~3s,网络状态正常情况下)。
Android端可使用RtmpDump开源库,根据从服务端获取到的推流地址,将MediaCodec的输出编码帧上传到流媒体服务器。
相关笔记:Android使用RtmpDump进行RTMP推流介绍_丞恤猿的博客-CSDN博客
若要在本地合成视频文件,则将MediaCodec的输出编码帧交给MediaMuxer来处理。
相关笔记:Android MediaMuxer合成视频文件_丞恤猿的博客-CSDN博客
5.客户端拉流播放
Android端可使用IjkPlayer,支持各种常见的拉流协议,支持软解码和硬解码,支持变速播放。
相关笔记:
Android IjkPlayer API介绍_丞恤猿的博客-CSDN博客
https://blog.csdn.net/u013914309/article/details/124773238
##.其它补充
音视频连麦、视频PK等,一般会接入第三方SDK来完成,例如声网(Agora)、即构(Zego)等。
因为手机的性能有限,视频混流一般在服务端进行,混流后再旁路推流到设定好的推流地址,然后由观看端拉取播放。
#.相关概念
##.流媒体服务器
流媒体服务器是运行在服务端的程序,支持按照流式协议(RTMP、HLS、HPPT-FLV等)让客户端上传或拉取媒体数据,并提供媒体数据处理能力。
(如果自己只需要一个简单的服务器来测试直播功能的话,现在网上有很多搭建RTMP服务器的教程,可以买个便宜的VPS或云服务器搭建一下。而且还有更简单的手段,例如腾讯云之类的,在云服务器装系统时,直接可以选择SRS音视频服务器,
会自动配置流媒体服务器。)
##.CDN大致介绍
CDN(Content Delivery Network),即内容分发网络,通过在各个用户访问比较集中的地区设置一些缓存服务器(CDN节点),缓存网站要下发给用户的资源。当用户请求这些资源时,CDN会根据距离、网络状态等做出判断,让用户从适合的CDN节点上获取到对应资源。从网站服务器到CDN节点的速度一般较快,而且CDN可以降低网站服务器的网络负载,因此提升了用户获取资源的速度。

Android 视频直播的流程总览相关推荐

  1. 开源SDK实现Android视频直播

    最近一段时间,视频直播可谓大火.在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等.本文要讲解的是如何使用一系列免费工具,打造一套视频直播方案. 视频直 ...

  2. Android视频直播的实现(推流完整实现001)

    http://blog.csdn.NET/huaxun66/article/details/53427771 http://blog.csdn.net/huaxun66/article/details ...

  3. Android视频直播的实现(包括服务器搭建)

    http://blog.csdn.net/huaxun66/article/details/53427771 最近一段时间,视频直播可谓大火.在视频直播领域,有不同的商家提供各种的商业解决方案,包括软 ...

  4. Android视频直播原理详解

    最近一段时间,视频直播可谓大火.在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等.本文要讲解的是如何使用一系列免费工具,打造一套视频直播方案. 视频直 ...

  5. 节选—Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目

    本文转载自Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目,截取其中技术概念比较相关的部分,并做了重新的排版. 视频和直播的准备: android-java层:camera ...

  6. Android视频直播源码开发直播平台、点播播放器哪家强?

    Android视频直播源码开发直播平台.点播播放器哪家强? 最近在项目中要加入视频直播和点播功能,那么问题来了,我需要一个播放器来播放视频流,那该如何选择呢?除了原生的VideoView(VideoV ...

  7. android 视频直播SDK

    通过android移动端实时采集视频,同时在拍摄过程中支持多种实时滤镜效果,只要调用视频直播接口,通过3G.4G.WIFI等网络,推流发送给云端流媒体直播系统处理,并通过CDN视频加速分发做现场直播播 ...

  8. 前端如何实现整套视频直播技术流程(以打扑克直播软件为例)

    前端如何实现整套视频直播技术流程目录大纲: 直播技术的简单介绍 前端搭建使用的技术 实践效果 后续需要深入的地方 打扑克直播软件视频直播技术简介: 首先说明,本篇文章是概念+实践,对于希望了解和实践一 ...

  9. 直播平台软件开发的前端如何实现整套视频直播技术流程

    直播平台软件开发的前端如何实现整套视频直播技术流程 正文 下面按照目录大纲来一个一个讲解. 1. 直播技术的介绍 直播技术涵盖很广,现如今大家广泛了解的就有视频网站的个人直播.手机直播.安防方面的摄像 ...

  10. android直播功能实现,Android视频直播功能实现流程

    视频直播场景的主要结构及流程如下图所示: 请注意: 除了上述基本功能,开发者如果想使用 ZegoLiveRoom SDK 实现更高级的功能,例如混音.音频录制.外部滤镜等,请直接参考 互动视频-高级功 ...

最新文章

  1. WebGL 浏览器函数
  2. 【赠书】新手速递!深度学习视频理解!
  3. js 两行之间的设置间距_厂房仓库的防火间距考点汇总
  4. Spring MVC入门示例教程--表单处理
  5. mysql集群重启报错lock_CentOS7.2 下 MySQL 之 PXC 集群部署【Docker+单机多节点】
  6. Java CompletableFuture
  7. 【图像处理】MATLAB:点、线、边缘检测
  8. BT种子下载软件uTorrent Pro v3.5.5.45972
  9. ios游戏使得newpad不断迅速增长
  10. 农夫山泉 || 到底是如何缔造年140亿销售神话的?
  11. vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转
  12. FTPS、SFTP和FTP的区别与联系
  13. 视频转换格式,用DOS命令
  14. 你理解的「增长」真的是增长吗?
  15. ARM Linux下安装CH341串口驱动
  16. OPENDATASOURCE 打开excel、access、qsl
  17. PTA c#PTA第五章循环练习答案I【程序设计基础】
  18. uni-app引入自定义图标库——Iconfont-阿里巴巴
  19. GDI/GDI+/D2D/D3D
  20. 空间存储公链(SSCC):一个创新的去中心化共识(POCC)隐私网络和存储协议

热门文章

  1. access中本年度的四月一日_《四月一日灵异事件簿》一部打工人的励志故事,哈哈哈~(诙谐,温馨,人性,可爱,悬疑,友情,羁绊)...
  2. Android数据库框架Sugar的使用
  3. h5 android上传本地视频文件,关于webview适配H5上传照片或者视频文件的方法
  4. 有电流平衡能力的6组白光LED驱动器MAX8790
  5. python自动图片拼接——基于Pillow和os
  6. 企业内部短信模板大全分析
  7. VBA批量标色删除两列重复值
  8. 算术收益率与对数收益率(几何收益率)
  9. 利用@media与@media screen进行响应式布局
  10. Qt - 抽签小工具源码