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

原创 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等
版权声明:本文为博主原创文章,未经博主允许不得转载。

soundtouch 变声使用和算法

soundtouch 源码下载地址 编译完成之后$soundstretch --help This program is subject to (L)GPL license. Run "so...
  • dangxw_
  • dangxw_
  • 2016年03月24日 19:39
  • 4612

FFmpeg + SoundTouch实现音频的变调变速

本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件。 主要有以下内容: 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息 将...
  • BrookIcv
  • BrookIcv
  • 2016年10月27日 10:58
  • 1421

ffmpeg源码编译

ffmpeg源码编译 简介 ffmpeg是一套功能强大的多媒体处理工具,它几乎涵盖了当前所有主流的多媒体数据封装格式、多媒体传输协议及音视频编解码器,并支持多媒体后处理,视频色彩转换、滤镜和缩放等,...
  • yzhang6_10
  • yzhang6_10
  • 2017年03月21日 15:57
  • 935

NDK开发——FFmpeg在Linux下编译、测试编译结果

实现内容 1、编译ffmpeg的所有动态库(so文件) 2、编译ffmpeg的所有静态库(a文件) 3、编译ffmpeg打包所有静态库 4、测试ffmpeg编译结果 前提准备 And...
  • qq_30379689
  • qq_30379689
  • 2017年09月04日 23:53
  • 657

自学体验使用fmod 以及 仿QQ变声 fmod

模块一 体验使用fmod 到https://www.fmod.com/download 上下载fmod android版本的 这里我们用的是别人生成的so库 libfmod.so库 l...
  • Boom_Jia
  • Boom_Jia
  • 2017年12月25日 09:28
  • 88

音视频技术基础知识

第一部分:基本概念讲解 媒体:是表示,传输,存储信息的载体,常人们见到的文字、声音、图像、图形等都是表示信息的媒体。 多媒体: 是声音、动画、文字、图像和录像等各种媒体的组合,以图文并茂,生动活泼的动...
  • fenglinfeiye
  • fenglinfeiye
  • 2010年05月19日 16:36
  • 11227

音视频技术 视频开发参考资料

本文阐述视频聊天网站相关的技术、发展过程以及未来的发展趋势。我长时间从事外包业务开发和技术开发的,从客户那里了解到了很多的视频聊天网站相关的需求,经过自己长时间对视频聊天网站运营模式、盈利模式、系统架...
  • little_rui
  • little_rui
  • 2015年01月21日 09:28
  • 903

直播技术汇总

做一款仿映客的直播App?看我就够了 直播时代--IOS直播客户端SDK,美颜直播 一、直播一些技术名词 1、什么是 FFmpeg ,FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自...
  • u012390519
  • u012390519
  • 2016年10月20日 13:52
  • 3590

关于直播,所有的技术细节都在这里了

前言: 网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调, 视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看, 直播的打开时间和延迟变成了影响产品功能发展...
  • wu5215080
  • wu5215080
  • 2017年02月06日 15:21
  • 1143

你想知道的直播技术都在这里了

概述2016年基本上可以说一个直播年,各大互联网挣相进入直播行业,成就了直播技术的发展。之前我们也对直播连麦技术做了一个简单的分析,但是没有从整体上介绍,今天我们就组一个整体的介绍(本文部分资料来源于...
  • xiangzhihong8
  • xiangzhihong8
  • 2017年02月11日 12:17
  • 3836
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于音视频直播技术的总结
举报原因:
原因补充:

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