移动端直播基础知识概述
2017-08-31 22:09
225 查看
RTMP概述
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。直播简要图
播放简要图
1.直播基本流程
数据采集:摄像头和麦克风采集音视频数据。图像处理:将数据采集的输入流进行实时滤镜,得到美化后的视频帧。
视频编码:软硬编码 CPU和GPU 编码格式H.264,(H.265压缩比率更高,算法更复杂,未来的技术) 软编码支持现在所有的系统版本,硬编码 苹果在iOS8才开始支持。
视频编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。
HECV(H.265),[H.264],MPEG4,MPEG2,VP9,VP8,VC-1.
码率相同,编码质量:HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。
主流编码
H.264仅仅是一个编码标准,而不是一个具体的编码器,H.264只是给编码器的实现提供参照用的。
实际中使用最多的就是x264了,性能比较好。
音频编码
音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。
AAC AC-3 MP3 WMA
码率相同,编码质量 AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
封包:现在直播rtmp 一般采用封包是FLV
上传:RTMP推流
云端cdn:网宿cdn分发转码,分发和录制
直播播放器:负责拉流,解码,播放。
视频播放器原理
视音频技术主要包含以下几点:封装技术,视频压缩编码技术以及音频压缩编码技术。如果考虑到网络传输的话,还包括流媒体协议技术。
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。
2.获取系统的授权
摄像头和麦克风权限3.配置采样参数
音频:需要配置码率,采样率;视频:需要配置视频分辨率,视频的频率,视频的码率。
开源项目
https://github.com/LaiFengiOS/LFLiveKit
相关文章推荐
- 移动端尺寸基础知识科普指南
- Java基础知识强化62:Arrays工具类之概述和使用
- Java基础知识强化89:Date类之Data类概述及其方法
- 【干货】移动端基础知识技巧总结
- 直播推流基础知识笔记
- 【JAVA基础知识总结】Java I/0流概述以及使用方法
- Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述
- Bash shell 编程之基础知识概述 (if语句)
- SNMP基础知识 - 概述
- 前篇:2.移动端尺寸基础知识
- Linux基础知识总结-概述和基本操作
- Quartz.NET基础知识概述
- Java基础知识强化36:StringBuffer类之StringBuffer的概述
- 转载 移动端尺寸基础知识
- Linux基础知识:内核编译-内核管理概述
- 基础知识(1)- Java程序设计概述
- Java基础知识强化之IO流笔记07:自定义的异常概述和自定义异常实现
- 黑马程序员——Java语言基础——01.基础知识【基本常识】【java概述】【配置环境变量】
- Java基础知识强化之集合框架笔记31:集合之泛型类的概述和基本使用
- 移动端尺寸基础知识