关于音视频直播技术的总结

原创 2017年05月18日 19:41:15

流媒体协议
流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如图所示。

这里写图片描述

直播平台参数对比
主流互联网视音频平台直播服务的参数对比如图所示:

这里写图片描述

直播技术架构图:

这里写图片描述

可以看到直播的流程可以分为如下几步:

采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放

1.音视频采集

采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种完全不同的输入源和数据格式。
音频采集:麦克风采集,系统采集等

音频数据既能与图像结合组合成视频数据,也能以纯音频的方式采集播放,后者在很多成熟的应用场景如在线电台和语音电台等起着非常重要的作用。音频的采集过程主要通过设备将环境中的模拟信号采集成 PCM 编码的原始数据,然后编码压缩成 AAC等格式的数据分发出去。常见的音频压缩格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。
音频采集和编码主要面临的挑战在于:延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等。

视频采集:摄像头采集,屏幕录制,视频文件等

将图像采集的图片结果组合成一组连续播放的动画,即构成视频中可肉眼观看的内容。图像的采集过程主要由摄像头等设备拍摄成 YUV 编码的原始数据,然后经过编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。
图像由于其直观感受最强并且体积也比较大,构成了一个视频内容的主要部分。图像采集和编码面临的主要挑战在于:设备兼容性差、延时敏感、卡顿敏感以及各种对图像的处理操作如美颜和水印等。

2.音视频处理

音频可以变声变调,视频可以美颜加水印,滤镜等

视频或者音频完成采集之后得到原始数据,为了增强一些现场效果或者加上一些额外的效果,我们一般会在将其编码压缩前进行处理,比如打上时间戳或者公司 Logo 的水印,祛斑美颜和声音混淆等处理。在主播和观众连麦场景中,主播需要和某个或者多个观众进行对话,并将对话结果实时分享给其他所有观众,连麦的处理也有部分工作在推流端完成。

3.编码和封装

编码:把原始音频PCM,视频yuv编码为 AAC和h264等

视频编码的意义
原始视频数据存储空间大,一个 1080P 的 7 s 视频需要 817 MB
原始视频数据传输占用带宽大,10 Mbps 的带宽传输上述 7 s 视频需要 11 分钟
而经过 H.264 编码压缩之后,视频大小只有 708 k ,10 Mbps 的带宽仅仅需要 500 ms ,可以满足实时传输的需求,所以从视频采集传感器采集来的原始视频势必要经过视频编码。

编码基本原理
为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?核心思想就是去除冗余信息:
1)空间冗余:图像相邻像素之间有较强的相关性
2)时间冗余:视频序列的相邻图像之间内容相似
3)编码冗余:不同像素值出现的概率不同
4)视觉冗余:人的视觉系统对某些细节不敏感
5)知识冗余:规律性的结构可由先验知识和背景知识得到

封装:把AAC和h264封装成MP4或fiv等格式

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议

4.推流到服务器

推流是直播的第一公里,直播的推流对这个直播链路影响非常大,如果推流的网络不稳定,无论我们如何做优化,观众的体验都会很糟糕。所以也是我们排查问题的第一步,如何系统地解决这类问题需要我们对相关理论有基础的认识。
推送协议主要有三种:

1.RTSP(Real Time Streaming Protocol):实时流传送协议,是用来控制声音或影像的多媒体串流协议, 由Real Networks和Netscape共同提出的;

  2. RTMP(Real Time Messaging Protocol):实时消息传送协议,是Adobe公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议;

 3.  HLS(HTTP Live Streaming):是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议;

主要介绍RTMP
RTMP协议基于 TCP,是一种设计用来进行实时数据通信的网络协议,主要用来在 flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括 Adobe Media Server/Ultrant Media Server/red5 等。
它有三种变种:

RTMP工作在TCP之上的明文协议,使用端口1935;
RTMPT封装在HTTP请求之中,可穿越防火墙;
RTMPS类似RTMPT,但使用的是HTTPS连接;

RTMP 是目前主流的流媒体传输协议,广泛用于直播领域,可以说市面上绝大多数的直播产品都采用了这个协议。
RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据。一个单一的连接可以通过不同的通道传输多路网络流。这些通道中的包都是按照固定大小的包传输的。

5.服务器流分发

流媒体服务器的作用是负责直播流的发布和转播分发功能。
流媒体服务器有诸多选择,Wowza , Nginx

6.播放器流播放

主要是实现直播节目在终端上的展现。因为我这里使用的传输协议是RTMP, 所以只要支持 RTMP 流协议的播放器都可以使用,譬如:

电脑端:VLC等
手机端:Vitamio以及ijkplayer等
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

直播技术总结(四)音视频数据压缩及编解码基础

音视频压缩技术是编解码中难点,常常会涉及很多算法处理问题。数据封装,转封装等,看下Agenda: 音视频为何需要压缩? 压缩编码的分类 常用压缩编码的方法 编码器中的关键技术 预测 量化 变换 熵编...

VOIP音视频带宽计算

单个网口的最大并发路数跟网口的实时速率、音视频的码率有关。 1.网口最大工作速率 网口的实时速率跟网卡芯片有关,常见的有100M和1000M。现在网口基本都是千兆网口了。 linux下查...

直播流程总结

一.简述总体内容 1.直播流程介绍 2.Mac搭建nginx+rtmp服务器(模拟推流拉流) 3.简单的集成推流拉流(实用篇) 4.好的博客推荐二.直播流程介绍1.简单的流程图2.直播流程屏幕...

iOS 简单的视频直播功能开发(实时视音频流录制编码+RTMP传输+实时拉流解码播放)

推流端:自己开发难度很大,视频直播就被卡死了,音频根本没来得及弄,最终使用了github上开源的框架。                原生开发基本流程:AVFoundation获取视频流...

Exynos4412时钟体系分析

本文转载自:http://www.techbulo.com/1365.html 在芯片手册里,“时钟管理单元 (Clock Management Unit)“的简称为 CMU 。CMU_ XXX ...

音视频直播技术漫谈

今天的给大家简单的介绍一下音视频技术主要应用于哪些产品, 以及这些产品都涉及到哪些技术,并简单讲一下每种技术的难点,最后我想谈一谈音视频直播的未来。产品分类现在大家一谈到音视频直播就会想到花椒、映客等...

音视频直播技术--Android视频采集(Camera2)

今天为大家介绍一下如何在 Android 上进行视频采集。在 Android 系统下有两套 API 可以进行视频采集,它们是 Camera 和 Camera2 。Camera是以前老的 API ,从 ...

《视频直播技术详解》系列之二:采集

七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣。结合七牛实时流网络 LiveNet 和直播云解决...

「视频直播技术详解」系列之一:采集

关于直播的技术文章不少,成体系的不多。我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。...

【移动开发】关于视频直播技术,你想要知道的都在这里了(三)编码和封装

http://www.jianshu.com/p/b61cd0bc2abe 关于直播的技术文章不少,成体系的不多。我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频...
  • jeffasd
  • jeffasd
  • 2016年10月19日 13:59
  • 411
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于音视频直播技术的总结
举报原因:
原因补充:

(最多只允许输入30个字)