美文网首页
【iOS】直播技术流程-(1)

【iOS】直播技术流程-(1)

作者: Colleny_Z | 来源:发表于2017-12-22 15:17 被阅读412次

前言

此刻,直播如火如荼(cha),所以在这里学习一下,因为所用到的技术太多,太广泛,所以更需要记录以备后用,文章连载,如有问题,客官别客气,狠狠的批评纠正我,一起进步。

直播平台效果图

本集简介

主要分解直播整个流程步骤与技术点。

直播总体技术流程

  • 音视频采集
  • 前处理
  • 编码
  • 传输,推流
  • 解码
  • 渲染,播放

直播步骤整体概览 这里引用一下网上的流程图:


直播流程示意图

流程步骤详解

  • 音视频采集

音视频的采集是直播架构的第一个环节,也是直播的视频来源
采集的来源包括:摄像头采集,屏幕采集,iOS我们常用前者

  • 前处理

前处理主要包括,美颜、模糊效果、水印等,总之就是让人变帅,画面变炫。在iOS端图像处理库是GPUImage。

  • 编码

不经编码的视频存储所占用的内存太大,更何况还需要网络传输。
编码就是通过压缩音视频数据来减少数据体积,方便音视频数据的后期推流,拉流和存储,能大大提高存储传输效率。所以音视频需要经过压缩编码才能进行存储和传输。

那么问题来了,如何编码?有哪几种编码方式?

编码方式一般分为硬编码软编码两种:

  1. 硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP芯片等
  2. 软编码:使用CPU进行编码(手机容易发热)

在iOS端,由于硬件兼容性较好,我们可以直接进行硬编码。

既然需要编码,那么就需要制定编码规则即编码标准:

  1. 视频编码:H.265、H.264、VP8、VP9等
  2. 音频编码:AAC、Opus
  • 传输

从推流端到服务端,数据经过推流端采集和预处理,编码之后推流到服务端
流传输就涉及到相应的传输协议,最常用的协议是RTMP、RTSP、HLS

  • 流分发

音频流推到服务器后,为了适配各个平台端各种不同协议,需要在服务端做一些流处理工作,比如转码成不同格式支持不同协议如 RTMP、HLS 和 FLV,以适应各个平台,比如:iOS、Android、PC、网页...,
甚至,我们在服务端也提供了内容识别如鉴黄的功能,也是在服务端这里进行处理。

  • 播放

拉流获取音视频数据后,需要通过解码器解码,渲染,最后在播放器上播放
总体步骤大概如下:

  1. 解协议:取出网络传输过程中一些无用信息
  2. 解封装:获取到的是 音频+视频 放在一起的封装文件
  3. 音视频解码
  4. 音视频同步

本集完结

下集预告

音视频的采集与写入

相关文章

网友评论

      本文标题:【iOS】直播技术流程-(1)

      本文链接:https://www.haomeiwen.com/subject/xqxxgxtx.html