(零)音视频技术基础知识

2019-08-02  本文已影响0人  sweetpf

前言

耽误了很久,一直想写音视频开发的教程,一方面,音视频的发展正在向各个行业扩展,从教育的远程授课,交通的人脸识别,医疗的远程就医等,音视频方向已经占据一个相当重要的位置,而音视频真正入门的文章又少之甚少,一个刚毕业小白可能很难切入理解,因为音视频中涉及大量理论知识,而代码的书写需要结合这些理论,所以搞懂音视频,编解码等理论知识至关重要。另一方面,公司的业务也在逐渐向音视频靠拢,我需要先将积累的知识点重新梳理后分享给其他同学。

整个过程可能会花费较长时间,为了防止大家理解过于空洞,我会将demo上传到Github,供大家对照学习。 在代码实现上,我更多会以iOS开发为着重点。

如果喜欢,请点赞。支持转载,转载请附原文链接.


教程概述

整个教程在我目前的规划里面大概分为几块:


音视频基础知识体系

在教程开始之前,我们先了解音视频技术的基础知识,当然我更多的是讲解有那些知识体系以及如何使用,而不会去详细讲解知识体系的细节或理论基础,例如我会讲解压缩数据原理,但是不会讲解I帧,P帧,B帧具体的编码。简而言之,我们将站在巨人肩膀上,而不会去探究巨人是怎样形成的。

1、封装格式

封装格式也称多媒体容器,它只是为多媒体编码提供了一个“外壳”,也就是将所有的处理好的视频、音频或字幕都包装到一个文件容器内呈现给观众,这个包装的过程就叫封装。


常见音视频的封装格式.png

Tips:封装格式不影响视频画质。它只负责把内部的视频轨和音频轨集成在一起,只起到一个文件夹(或者压缩包)的作用,并没有对视频轨和音频轨造成影响。

2、视频编码技术

3、音频编码技术

音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量,偏于存储和传输。
描述一段PCM数据一般需要以下几个概念:

常见音频编码格式有:


常见音频编码格式.png

4、流媒体协议技术

流媒体协议是用于传输音视频的协议,包括RTP、RTCP、RTSP、RTMP、HLS等,本文只介绍技术,其中常用的是RTMP协议。

RTMP视频播放的特点:
(1)RTMP协议是采用实时的流式传输,所以不会缓存文件到客户端,这种特性说明用户想下载RTMP协议下的视频是比较难的;
(2)视频流可以随便拖动,既可以从任意时间点向服务器发送请求进行播放,并不需要视频有关键帧。相比而言,HTTP协议下视频需要有关键帧才可以随意拖动。
(3)RTMP协议支持点播/回放(通俗点将就是支持把flv,f4v,mp4文件放在RTMP服务器,客户端可以直接播放),直播(边录制视频边播放)。

总结
RTSP协议
(1)是流媒体协议。
(2)RTSP协议是共有协议,并有专门机构做维护。.
(3)RTSP协议一般传输的是 ts、mp4 格式的流。
(4)RTSP传输一般需要 2-3 个通道,命令和数据通道分离。
(5)常用于安防监控领域

RTMP协议
(1)是流媒体协议。
(2)RTMP协议是 Adobe 的私有协议,未完全公开。
(3)RTMP协议一般传输的是 flv,f4v 格式流。
(4)RTMP一般在 TCP 1个通道上传输命令和数据
(5)通用,浏览器直接可以看,可支持百万,千万人同时在线看

HLS协议
(1)是流媒体协议。
(2)苹果公司开放标准
(3)可以穿过任何允许HTTP数据通过的防火墙或者代理服务器
(4)IOS上支持完美。Android3.0开始支持。PC/flash上现在也有各种as插件支持

5、音视频原理


业务剖析

音视频在互联网行业的需求实际上简单归纳为互逆过程的两个部分:推流和拉流。


如果喜欢,请帮忙点赞。支持转载,转载请附原文链接。

上一篇下一篇

猜你喜欢

热点阅读