嵌入式多媒体开发技能树

IPC/NVR/可视门铃等具备多媒体能力的设备,扫地机/AGV等机器人设备


User avatar
chenjing
Posts: 26

Re: 嵌入式多媒体开发技能树

基础功能:告警

User avatar
chenjing
Posts: 26

Re: 嵌入式多媒体开发技能树

基础功能:语音&视频呼叫

User avatar
chenjing
Posts: 26

Re: 嵌入式多媒体开发技能树

基础功能:低功耗保活与唤醒

User avatar
chenjing
Posts: 26

Re: 嵌入式多媒体开发技能树

算法

User avatar
pippin-bobo
Posts: 236

Re: 嵌入式多媒体开发技能树

基础功能:云台控制

Last edited by pippin-bobo on 2022年 Sep 27日 11:01, edited 2 times in total.
User avatar
chenjing
Posts: 26

Re: 嵌入式多媒体开发技能树

IPC业务

User avatar
chenjing
Posts: 26

Re: 嵌入式多媒体开发技能树

NVR业务

User avatar
hnsqlisai
Posts: 13

嵌入式多媒体开发技能树_视频基础属性

一、视频的关键参数
1.1、帧率fps
通常说一个视频的25帧,指的就是这个视频帧率,即1秒中会显示25帧;视频帧率影响的是画面流畅感,也就是说视频帧率超高,表现出来的效果就是:画面越显得流畅。
我们的设备,通常为:20fps

1.2、码率bitrate
是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是:视频画面更清晰画质更高。

1.3、视频分辨率
分辨率就是我们常说的600x400分辨率、1920x1080分辨率,分辨率影响视频图像的大小,与视频图像大小成正比:视频分辨率越高,图像越大,对应的视频文件本身大小也会越大。
IPC上常见分辨率:1280720,19201080,23041296,20481536,2560*1440等。

1.4、GOP
Group of Picture,关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP 开始才有可能得以恢复,所以GOP值也不宜设置过大。

1.5、QP
Quantizer Parameter,量化参数,反映了空间细节压缩情况。值越小,量化越精细,图像质量越高,产生的码流也越大。如QP小,大部分的细节都会被保留;QP增大,一些细节丢失,码率降低,但图像失真加强和质量下降。

Code: Select all

通常配置时,需分别配置I帧的QP和p帧的QP。

1.6、profile level
H264 的编码等级通常是BP、EP、MP、HP:

Code: Select all

    1)BP-Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;

    2)EP-Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;

    3)MP-Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),也支持CAVLC 和CABAC 的支持;

    4)HP-High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV 格式。  

H265的编码等级:

Code: Select all

常用的三个Main profile,常规8bit像素精度的Main profile,支持10bit像素精度的Main 10 profile和支持静止图像的Main Still Picture profile。
v2_1.jpg

我们的IPC采用的是:H265 Mani10(fh8636),H264 BP2.2(fh8636)

二、常用的几种编码模式
2.1 Variable BitRate(VBR)
动态比特率,其码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高,Motion发生时,马赛克很少。码率控制算法根据图像内容确定使用的比特率,图像内容比较简单则分配较少的码率(似乎码字更合适),图像内容复杂则分配较多的码字,这样既保证了质量,又兼顾带宽限制。这种算法优先考虑图像质量。

2.2 Average BitRate(ABR):
平均比特率 是VBR的一种插值参数。ABR在指定的文件大小内,以每50帧 (30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。

2.3 Constant BitRate(CBR):
以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳定。优点是压缩速度快,缺点是每秒流量都相同容易导致空间浪费。

2.4 Constrained Variable BitRate(CVBR):
VBR的一种改进,兼顾了CBR和VBR的优点:在图像内容静止时,节省带宽,有Motion发生时,利用前期节省的带宽来尽可能的提高图像质量,达到同时兼顾带宽和图像质量的目的。

Code: Select all

不同的芯片,支持的编码模式可能不一样,需要根据实际情况配置。我们的设备一般使用VBR。

三、视频帧 - I帧、P帧、B帧
I帧:即Intra-codedpicture(帧内编码图像帧),I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。

Code: Select all

P帧:即Predictive-codedPicture(前向预测编码图像帧)。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

B帧:即Bidirectionallypredicted picture(双向预测编码图像帧)。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

在H.264压缩标准中I帧、P帧、B帧用于表示传输的视频画面:

v3.png

四、FAQ
4.1 I帧和IDR帧区别
IDR属于I帧,但是I帧不一定是IDR帧。只有IDR帧,才有SPS和PPS。解码器收到IDR帧时,将reference buffer清空;而收到I帧不会清空reference buffer。也就是说,对某个IDR帧之后的帧,解码器不会参考这个IDR帧之前的任何帧做解码。对某个I帧之后的帧,解码器可能会参考这个I帧之前的帧做解码。

Code: Select all

IPC设备的I帧通常是IDR帧,方便随时预览拉流。每个I帧前有SPS和PPS。

FH8636 h265视频:
v4.png

FH8636 H264视频:

v5.png
Last edited by hnsqlisai on 2022年 Oct 18日 15:54, edited 5 times in total.
User avatar
hnsqlisai
Posts: 13

嵌入式多媒体开发技能树_音频的基础知识

1.1. 声音的三要素
声音的特性可由三个要素来描述,即响度、音调和音色。音乐的三要素是旋律,节奏,和声。

Code: Select all

响度(loudness):又称音量,人耳对声音强弱的主观感觉称为响度。响度和声波振动的幅度有关。一般说来,声波振动幅度越大则响度也越大。当我们用较大的力量敲鼓时,鼓膜振动的幅度大,发出的声音响;轻轻敲鼓时,鼓膜振动的幅度小,发出的声音弱。

音叉振动时发出的声波为单音,即只有一个频率成分。若设法将音叉的振动规律记录下来,可发现其振动波形为一正弦波。当用不同力量敲击某个音叉时,音叉发出的声波幅度不同,这意味着声音的响度不同。给出了两个声音波形,其幅度一大一小,幅度大的波形其声音响度大,幅度小的波形其声音响度小。

另外,人们对响度的感觉还和声波的频率有关,同样强度的声波,如果其频率不同,人耳感觉到的响度也不同。



音调(Pitch):人耳对声音高低的感觉称为音调。音调主要与声波的频率有关。声波的频率高,则音调也高。当我们分别敲击一个小鼓和一个大鼓时,会感觉它们所发出的声音不同。小鼓被敲击后振动频率快,发出的声音比较清脆,即音调较高;而大鼓被敲击后振动频率较慢,发出的声音比较低沉,即音调较低。

如果分别敲击一个小音叉和一个大音叉时,同样会感觉到小音叉所发声音的音调较高,大音叉所发声音音调较低。如果设法把大、小音叉所发出的声波记录下来,可发现小音叉在单位时间内振动的次数多,即频率高,大音叉在单位时间内振动的次数少,即频率低。给出了两个频率不同的声音波形,从声音可听出,频率高的声音波形听起来音调较高,而频率低的声音波形听起来则音调较低。



音色(Timbre):亦称音品。音色是人们区别具有同样响度、同样音调的两个声音之所以不同的特性,或者说是人耳对各种频率、各种强度的声波的综合反应。音色与声波的振动波形有关,或者说与声音的频谱结构有关。

前面说过,音叉可产生一个单一频率的声波,其波形为正弦波。但实际上人们在自然界中听到的绝大部分声音都具有非常复杂的波形,这些波形由基波和多种谐波构成。谐波的多少和强弱构成了不同的音色。各种发声物体在发出同一音调声音时,其基波成分相同。但由于谐波的多少不同,并且各次谐波的幅度各异,因而产生了不同的音色。

1.2. 音频的采样和量化
现实生活中,我们听到的声音都是时间连续的,我们称为这种信号叫模拟信号。模拟信号需要进行数字化以后才能在计算机中使用。

Code: Select all

目前我们在计算机上进行音频播放都需要依赖于音频文件。音频文件的生成过程是将声音信息采样、量化和编码产生的数字信号的过程,人耳所能听到的声音,最低的频率是从20Hz起一直到最高频率20KHZ,因此音频文件格式的最大带宽是20KHZ。根据奈奎斯特的理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音,所以音频文件的采样率一般在40~50KHZ,比如最常见的CD音质采样率44.1KHZ。波是无限光滑的,采样的过程就是从波中抽取某些点的频率值,就是把模拟信号数字化。如下图所示:
a1.png

Code: Select all

蓝色代表模拟音频信号,红色代表采样得到的量化数值。

PCM(Pulse Code Modulation),即脉冲编码调制,对声音进行采样、量化过程,未经过任何编码和压缩处理。

PCM数据是最原始的音频数据完全无损,所以PCM数据虽然音质优秀但体积庞大,为了解决这个问题先后诞生了一系列的音频格式,这些音频格式运用不同的方法对音频数据进行压缩,其中有无损压缩(ALAC、APE、FLAC)和有损压缩(MP3、AAC、OGG、WMA)两种。

1.3. 采样率
单位时间内对模拟信号的采样次数。采样频率越高,声音的还原就越真实越自然,当然数据量就越大。采样频率一般共分为22.05KHz、44.1KHz、48KHz三个等级。8KHz - 电话所用采样率, 对于人的说话已经足够,22.05KHz只能达到FM广播的声音品质(适用于语音和中等品质的音乐),44.1KHz则是是最常见的采样率标准,理论上的CD音质界限,48KHz则更加精确一些(对于高于48KHz的采样频率人耳已无法辨别出来了,所以在电脑上没有多少使用价值)。

Code: Select all

我们嵌入式设备对讲,需要对接echoshow等三方设备,因此通常使用8KHZ采样。

1.4. 位宽
采样位宽也叫量化级、样本尺寸、量化数据位数,每个采样点能够表示的数据范围。采样位数通常有8bits或16bits两种,采样位数越大,所能记录声音的变化度就越细腻,相应的数据量就越大。8位字长量化(低品质)和16位字长量化(高品质),16 bit 是最常见的采样精度。"采样频率"和"采样位数"是数字化声音的两个最基本要素,相当于视频中的屏幕大小(例如800*600)和颜色分辨率(例如24bit)。

Code: Select all

我们设备默认使用16bits。

1.5. 声道
声道数是指支持能不同发声的音响的个数,它是衡量音频数据的重要指标之一。单声道的声道数为1个声道;双声道的声道数为2个声道;立体声道的声道数默认为2个声道;立体声道(4声道)的声道数为4个声道。

Code: Select all

单声道:
a2.png

Code: Select all

双声道:
a3.png

Code: Select all

注意,多声道时,不同的声道音频数据可以不一样。日常使用中,多为双声道,如耳机,左声道和右声道。

嵌入式设备中,对音频要求不高,一般为单声道,设备只有一个喇叭。少数为左右声道数据相同的双声道,本机一个喇叭,设备可外接有源音箱,应用场景多为银行系统,语音广播。

Code: Select all

我们的设备默认使用单声道采集播放。

1.6. 码率
码率:(也成位速、比特率)是指在一个数据流中每秒钟能通过的信息量,代表了压缩质量。比如MP3常用码率有128kbit/s、160kbit/s、320kbit/s等等,越高代表着声音音质越好。MP3中的数据有ID3和音频数据组成,ID3用于存储歌名、演唱者、专辑、音轨等我们可以常见的信息。

公式:码率 = 采样率 * 采样位数 * 声道数

Code: Select all

例如:如果是CD音质,采样率44.1KHz,采样位数16bit,立体声(双声道),码率 = 44.1 * 1000 * 16 * 2 = 1411200bps = 176400Bps,那么录制一分钟的音乐,大概176400 * 1 * 60 / 1024 / 1024 = 10.09MB。

我们的设备,通常使用g711u/a编码,数据量缩小一倍, 码率:8000*16*1/2=64kbps=8kB/s。

1.7. 音频帧
音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms60ms为单位的数据量为一帧音频。这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的。

Code: Select all

我们设备裸码流,通常采用40ms作为1帧。每秒共25帧,每帧长度为:1280字节,使用16000,16bit 采样。如果使用8k的pcm,每帧长640字节,如果采用G711u、G711a,每帧长320字节。

1.8. 小结
熟悉音频基础知识,是嵌入式系统音频开发的基础。采样率,位宽,声道,贯穿整个音频开发过程中。

Post Reply