音视频工具产品设计方法论(音视频开发从入门到精通)

在如今的移动互联网时代,我们熟悉的直播产品有看比赛直播、打赏美女主播、听直播课程等。此外,随着短视频应用在Tik Tok和汽车上的爆发式增长,视频产品无时无刻不在充斥着我们的生活。那么,直播或视频产品背后有哪些音视频技术知识呢?本文将从直播产品的基础架构入手,讲解一些基础的音视频技术知识。

(音视频领域博大精深。本文只是从一个PM的角度总结了一些基本内容)

一、直播的基础架构一个直播的通用基础架构涉及三个部分,即音视频采集端、云服务器端和音视频播放端。

下图是一个APP直播功能的架构:

从上图可以看出,每个部分都有自己的工作要处理。

一般来说,视频直播功能的整体流程包括以下内容:

采集音视频、处理音视频编码和打包、流媒体服务器处理、流式音视频解码、音视频播放。在详细了解每一个流程之前,先从音视频的基础知识说起。

二、音视频技术基础1。音频声音:

我们通常在手机或电脑中听到的音频是数字化的音频模拟信号。起初,这些音频都是从物理开始的声音。

中学物理学过,声音是一种波,是物体振动产生的。

声波有三个要素:

音调:也叫音频,频率越高,波长越短,而频率较低的声音波长就越长。所以这样的声音更容易绕过障碍物。能量衰减越小,声音传得越远;音量:是振动的幅度。如果用不同的力度敲击桌面,声音会发生变化。生活中,我们用分贝来描述声音的响度;音色:同样的频率和响度,不同的物体发出不同的声音。波形的形状决定了声音的音色。因为不同的介质产生不同的波形,所以会产生不同的音色。模拟信号的数字化过程;

模拟信号的数字化过程是将模拟信号转换成数字信号的过程,包括采样、量化和编码。

我们可以通过下图来理解这个过程:

采样:可以理解为将时间轴上的信号数字化。通常采样率是用来保证一定频率范围内的声音能够被成功数字化。比如采样频率一般是44.1KHZ,也就是说每秒会采样44100次。量化:是指将振幅轴上的信号数字化,即声音波形的数据是多少位的二进制数据,单位是位。例如,16位二进制信号通常用于存储样本,也称为量化级别。量化级别是数字音质的重要指标,通常描述为24bit(量化级别)和48KHZ(采样率)。编码:将采样量化后的数据按照一定的格式记录下来。音频编码有多种格式,所谓音频裸数据是指脉码调制(PCM)数据。PCM音频流的码率可以用来描述PCM数据,其计算公式为:采样频率*采样大小(量化级别)*声道数(单声道、双声道、多声道)。通过以上过程,实现了音频信号的数字化过程。这些数据转换成数字信号后,可以进行存储、播放、复制、采集等操作。

音频编码:

上面说了,编码就是把采样量化后的数据按照一定的格式记录下来,那么为什么需要编码呢?

收集和量化的数据量非常大,无论从存储还是网络实时传输的角度来看,都是太大了。对于存储和传输来说是非常具有挑战性的,所以我们需要通过编码的方式对其进行压缩。

编码的指标是压缩比,通常小于1。

有两种编码算法:有损压缩和无损压缩。

无损压缩:解压缩后的数据可以完全恢复。以常用的压缩格式。大部分都是有损压缩。有损压缩:解压缩后的数据无法完全恢复,部分信息会丢失。压缩比越小,丢失的信息就越多,信号恢复的失真就越大。编码的本质是压缩冗余信号。冗余信号是指人耳无法感知的信号,包括人耳听觉范围之外的音频信号和隐蔽音频信号。信号掩蔽可以分为频域掩蔽和时域掩蔽。关于信号屏蔽的问题,大家可以发表自己的看法,这里就不做过多阐述了。

那么,音频压缩编码的常见格式有哪些呢?

主要包括:WMA编码;MP3编码;AAC编码,是一种流行的有损压缩编码技术,也是直播或小视频中常用的编码格式。OGG编码等。

2.视频数字视频:

我们平时在手机或PC上看到的视频,都是由内容元素、编码格式和包装容器组成的。

内容:包括图像、音频和元数据。编码格式:包括视频常用编码格式H264和音频常用编码格式AAC。封装:这是常见的文件格式,如MP4、MOV、FLV、RMVB、AVI等。图片:

图像是人的视觉感知的物质再现。三维图像包括深度、纹理和亮度信息,而二维图像包括纹理和亮度信息。我们可以简单的把纹理理解为图像。

说完了图像的概念,现在来说说视频:视频是由多个图像组成的,是一组连续的图像。一个基本的数字视频基本上是由“采集——,处理——,显示”构成的。

编码格式:

音频的编码我们已经讲过了,视频也有编码的过程。视频编解码过程是指对数字视频进行压缩或解压缩的过程。

在对视频进行编码和解码时,我们需要考虑以下因素的平衡:视频的质量、表示视频所需的数据量(通常称为比特率)、编码算法和解码算法的复杂度、对数据丢失和错误的鲁棒性、编辑的便利性、随机访问、编码算法设计的完善性、端到端延迟等因素。

常用的视频编解码方式有H.26X系列和MPEG系列,而目前最常用的视频编码格式是H.264,它具有码率低、图像质量高、容错性强、网络适应性强等优点,在实时视频应用中得到了广泛的应用。

再介绍一些关于H.264的知识:

在H.264中,图像包括帧、顶场和底场,完整的图像是帧。

在采集视频信号时,如果采用逐行扫描,每次扫描得到的信号就是一幅图像,也就是一帧。如果采用隔行扫描(奇数行和偶数行),扫描的图像会被分成两部分,每一部分称为场,按顺序又可分为顶场(也叫偶数场)和底场(也叫奇数场)。

帧和场的概念带来了不同的编码方式:帧编码和场编码。逐行扫描适用于运动图像,运动图像最好采用帧编码;隔行扫描适用于非运动图像,所以对于非运动图像采用场编码更为理想。

此外,每个帧图像可以被分成多个切片,每个切片由宏块组成,每个宏块由子块组成。

包装格式:

视频的包装格式可以看作是一个装载了视频、音频、视频编解码方法等信息的容器。视频打包格式可以支持多种视频编码和解码方法,例如QuickTime(。MOV)支持几乎所有的编解码方式,MPEG(.MP4)也支持大部分编解码方式。

在PC上,我们经常使用。MOV视频文件。通过上面的介绍,我们知道这个视频的文件格式是。MOV,而且封装格式是QuickTime文件格式,但我们无法知道它的视频编码和解码方法。如果要专业的描述一个视频,可以描述为:H.264/MOV视频文件,也就是说它的封装方式是QuickTime文件格式,文件格式是。MOV,编码方法是H.264

H.264:

H.264是一种高性能的视频编解码技术。它是由ITU和ISO共同建立的联合视频组共同制定的一种新的数字视频编码标准。

上面我们已经讲了H.264编码技术的优势。我们来看看H.264涉及的关键技术:

首先要知道,视频或者音频编码的目的是压缩。视频编码的目的是提取冗余信息,冗余信息包括空间冗余、编码冗余、视觉冗余和知识冗余。

基于此,H.264压缩技术包括:

a)帧内预测压缩解决了空间数据冗余的问题。空间冗余数据是在一个宽而高的空间中,包含大量颜色和光线的图片中的数据,人眼很难察觉。对于这些数据,我们可以直接压缩。

帧内压缩对应于I帧3354,即关键帧。那么我在框什么呢?在线教程里有一个经典的例子。如果镜头对着你拍,1秒钟内你的实际变化是非常小的。一般相机一秒会捕捉几十帧数据,比如动画,25帧/秒,视频文件一般在30帧/秒左右,对于那些变化不大的帧,为了压缩数据,第一帧完全保存。没有这个关键帧,解码数据就无法完成,所以I帧尤为关键。

b)帧间预测压缩,解决时间数据冗余问题。在上面的例子中,摄像机在一个片段时间中拍摄的数据变化不大。我们在这个段压缩同样的数据时间,也就是时间数据压缩。

帧间压缩对应P帧和B帧。p帧是前向参考帧,压缩时只参考前一帧。B帧是双向参考帧,压缩时参考上一帧和下一帧。

c)整数离散余弦变换(DCT),将空间相关性转化为频域的不相关数据,然后进行量化。

D)CABAC压缩:无损压缩。

H.264除了上述关键技术,还有几个重要的概念需要理解:

GOF:一组帧,就是一个I帧到下一个I帧,这一组的数据。包括b帧/P帧,我们称之为GOF。SPS和PPS:SPS和PPS是GOF的参数,SPS是存储帧数、参考帧数、解码图像大小、帧场编码模式选择标志等。PPS存储熵编码模式选择标识、切片数量、初始量化参数和去块滤波器系数调整标识等。解码视频时,在接收一组帧GOF之前,我们首先接收SPS/PPS数据,没有这组参数就无法解码。

所以如果解码时出现错误,首先检查是否有SPS/PPS。如果不是,检查是因为对等体没有发送,还是因为对等体在发送过程中丢失了。

更详细的H.264编码原理这里就不介绍了。有兴趣可以去网上查资料,宏块分组,宏块搜索,帧内预测,DCT压缩,H.264码流结构。

三。直播过程细节通过上面的介绍,我们了解了一些音视频的基础知识。接下来,我们再来描述一下直播应用的整体流程。

1.音视频采集将包括:音视频采集阶段的音频采集和图像采集。

在音频采集中,除了上面提到的采样率、量化级别、通道数参数外,还需要音频帧。

音频和视频非常不同。视频的每一帧都是一幅图像。从声音的正宣波可以看出,音频数据是流式的,没有一帧一帧的清晰概念。在实际应用中,为了音频算法处理/传输的方便,一般习惯上以2.5ms~60ms为一帧音频的数据单位。

这个时间叫做“采样时间”。它的长度没有特别的标准。根据编解码器和具体应用的需要来确定。

如果音频信号具有8kHz的采样速率、两个声道、16比特的量化级别以及从010到31019的20ms的采样速率,则音频数据帧的大小是:8000 * 2 * 16比特* 0.02秒=5120比特=640字节。

在图像采集的过程中,采集到的画面结果会组合成一组可以连续播放的动画,即视频中的内容可以用肉眼观看。

在图像采集过程中,YUV编码的原始数据由摄像机等设备拍摄,然后编码压缩成H.264格式数据进行分发。在图像采集阶段,涉及的主要技术参数包括:图像传输格式、图像格式、传输通道、分辨率和采样率。

在音视频采集阶段,常用的采集源有摄像头,比如手机的前后摄像头;现场游戏中使用的屏幕录制;和电视节目中视频文件的直接流式传输。

2.音视频处理音视频处理可以分为视频处理和音频处理。

视频处理包括:美颜、滤镜、面部识别、水印、剪辑拼接等。音频处理包括:混音、降噪、声音特效等。

先简单描述一下美颜和视频水印的基本原理:

美容的主要原理是通过【去死皮】【美白】来达到整体的美容效果。换肤的技术术语是去噪,即去除或模糊图像中的噪声。常见的去噪算法包括均值模糊、高斯模糊和中值滤波。这个环节还涉及到人脸和皮肤检测技术。

视频水印包括播放器水印和视频嵌入水印。对于播放器水印,如果没有有效的防盗措施,如果没有经过认证的推送流,客户端拿到直播流后可以在任何没有水印的播放器中播放,从而失去了视频保护的能力。所以一般来说,视频会通过嵌入水印的方式进行水印处理,这样水印就会嵌入到视频中,并在视频播放过程中持续显示。

大家再多聊聊吧。视频嵌入水印也将在软件中得到应用。当企业内部版权保护的动画视频在软件中播放时,会应用到嵌入水印技术。

3.音频视频编码和包装。音视频编码和视频打包在上面的基础知识部分已经介绍过了,这里不再赘述。

这里先说说编码器的知识。在本文中,我们学习了H.264的编码技术,编码过程是基于编码器的。

编码器的主要流程是:帧内预测(去除空间冗余)/帧间预测(去除时间冗余)3354变换(去除空间冗余)3354量化(去除视觉冗余)3354熵编码(去除编码冗余)。通过这个过程,就可以完成音频和视频的编码步骤。

4.Push stream Push stream是将处理后的音视频数据通过流媒体协议发送到流媒体服务器。

推送协议:

有基于RTMP、WebRTC和UDP的私有协议来推送流。

RTMP协议是基于TCP协议的。RTMP是当前主流的流媒体传输协议,广泛应用于直播领域。市面上大部分直播产品都采用了这个协议。但由于基于TCP协议的弱网络环境下传输成本高、丢包率高,不支持浏览器推送。WebRTC是一种支持与web浏览器进行实时语音对话或视频对话的API,主要用于视频会议。其主流浏览器支持度高,底层基于SRTP和UDP,在弱网方面有很大的优化空间。基于UDP的私有协议。有些直播应用会使用UDP作为底层协议来开发自己的私有协议,因为UDP在弱网环境下的优势可以通过一些定制的调优来达到更好的弱网优化效果,但是开发太高了。CDN:

要推出的流媒体要展示给各个地理位置的观众,这里就需要一个CDN网络。CDN是解决用户访问网络资源速度慢的技术。

包括CDN边缘节点、次节点和源站。内容提供商可以将内容放在源站上,用户从边缘节点获取数据,CDN的二级节点用于缓存,从而减轻源站的压力。

在直播领域,CDN支持的服务如下:

流媒体协议支持。如RTMP等。第一个屏幕打开。控制从用户的点击几秒钟内播放;1~3延时控制。从流媒体端到播放端,延时控制在1-3秒之间;全球智能路由。您可以使用整个CDN网络中的所有节点来服务单个用户,而不受地理限制。

5.流媒体服务器处理流媒体服务器应该做的事情,包括:数据分发(CDN),支持上述CDN的一些服务,实时转码和内容检测(黄色认证)等。

6.Pull stream Pull stream是指客户端从流媒体服务器上拉取上述步骤中的音视频数据。同样,这个过程也是基于上述的协议和CDN。

7.音视频解码在上面提到的H.264编码的介绍中,SPS/PPS是解码的必要数据。在这个步骤中,需要解码编码的音频和视频数据。

解码过程是编码的逆过程,包括熵解码、变换解码和预测解码。

H.264规范规定了解码器的结构,解码过程大致如下:以宏块为单位,依次进行熵解码、逆量化和逆变换,得到残差数据。然后通过结合宏块中的预测信息找到解码的参考块,然后通过结合解码的参考块和这个块的残差数据得到这个块的实际数据。在解码宏块之后,组合切片,然后将切片组合成图像。

这里需要注意的是,如果H264码流中的I帧出错或丢失,就会导致错误传输,单个P帧或B帧无法完成解码。I帧是一个完整的视频帧,是解码的关键。

8.音视频播放音视频数据解码完成后,可以在硬件设备(手机或PC)上通过播放器渲染播放音视频文件。

那么,上面架构图中的信令服务器是做什么的呢?

3354信令服务器用于处理锚终端和用户终端的一些信令指令。

网络中传输着各种各样的信号,其中一些是我们所需要的(比如电话中的语音,互联网上的数据包等。),而另一部分是我们不需要的(只能说不是直接需要的)。它专门用来控制电路。这种类型的信号称为信令(来自百度百科)。也就是说,信令是指通信系统中的控制指令。

基于此,我们再来描述一下整个过程:

共享终端发起信令,如:创建房间(或聊天、送礼物等。)并到达信令服务器;信令服务器处理并创建房间,并将流媒体云的地址返回给主播分享端。接下来,主播分享端采集的数据(音视频采集、处理、编码、打包过程)形成RTMP流,推送到CDN网络(push stream)。当观众想看的时候,客户端会向信令服务器发送信令,信令服务器会将观众添加到主播的房间,还会返回一个流媒体云的地址(这个地址是前一个主播的流媒体云的地址)。客户端获得流媒体云地址后,会去流媒体云服务器拉媒体流(流媒体和解码),从而看到要观看的直播节目(播放器播放)。好了,以上是直播应用最基本的架构和流程。

四。摘要本文通过直播应用的架构介绍了音视频技术的一些知识,并详细介绍了直播功能的整体流程。

音频视频技术是一个先进的领域。本文只是总结了一些基础知识。如果你想了解更多的音视频技术,推荐你去了解一下雷小华的博客。

#专栏作家#流年,人人都是产品经理专栏作家。互联网设计师,4年互联网产品设计经验。擅长用户体验设计,喜欢钻研需求功能背后的技术实现;在成为全面产品设计师的道路上不断努力前进!

本文由人人作为产品经理原创发布。未经许可,禁止复制。

来自Unsplash的图像,基于CC0协议。

其他教程

农产品滞销电商平台(农产品入驻电商平台标准)

2023-1-17 12:34:06

其他教程

ubuntu 安装python 3.11后删除旧版本(fedora linux)

2023-1-17 12:37:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索