本篇文章给大家谈谈音视频开发需要哪些知识,以及音视频技术基础知识对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享音视频开发需要哪些知识的知识,其中也会对音视频技术基础知识进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何快速学习音视频开发?
很多开发者都知道音视频开发这个概念,音视频开发不仅需要掌握图像、音频、视频的基础知识,并且还需要掌握如何对它们进行采集、渲染、处理、传输等一系列的开发和应用,因此,音视频开发是一门涉及到很多内容的领域。
一、音视频基础知识
视频编码指的就是通过特定的压缩技术
音视频开发需要哪些知识,将某个视频格式文件转换成另一种视频格式的文件的方式。
视频流传输中最重要的编解码标准有国际电联的H.261、H.263、H.264和国际标准化组织运动图像专家组的MPEG系列标准。
MPEG系列:(由ISO[国际标准化组织]下属的MPEG[运动图像开发专家组]开发) 视频编码方面主要是MPEG1(VCD)、MPEG2(DVD)、 MPEG4、MPEG4 AVC(正热门)。音频编码方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(MP3) 、 MPEG-2AAC、 MPEG-4 AAC等。
H.26X系列: (由 ITU[国际电传视讯联盟]主导,侧重网络传输,只有视频编码) H.261、H.262、H.263、H.263+、H.263++、H.264(与MPEG4 AVC 合作的结晶)
常见的音频编码格式有AAC、MP3、AC3
MP3:是一种音频压缩技术,它被设计用来大幅度地降低音频数据量。将音乐以1:10 甚至1:12的压缩率,压缩成容量较小的文件,而对于大多数的用户来说,重放的音质于最初不压缩的音频相比没有明显下降。 MP3的特点是,利用人耳对高频信号不敏感的特性,将时域波形信号转换成频域信号,并划分成多个频段,对不同的频段使用不同的压缩率,对高频信号使用大压缩率(甚至忽略信号),对低频信号使用小压缩率,保证信号不失真。这样一来就相当于抛弃人耳基本听不到的高频声音,只保留能听到的低频部分,从而将声音用1:10甚至1:12的压缩率压缩。
AAC:一种专门为声音数据设计的文件压缩格式,与MP3不同,它采用
音视频开发需要哪些知识了全新的算法进行编码,更加高效,具有更高的”性价比“,在感觉声音在没有明显降低的前提下,可使文件更加小巧。AAC的优点是,相对于MP3,AAC的音质更加文件更小。AAC缺点是,AAC是属于有损压缩格式,与时下流行的APE、FLAC等无损压缩格式相比音质存在本质上的差距。
AC3:有损音频编码格式。被广泛应用与5.1声道。AC3普及程度很高,唱片、电影院。AC3提供的环绕声系统由5个全频域声道和1个超低音声道组成。
MediaPlayer: 播放控制
MediaCodec: 音视频编解码
OMX: 多媒体部分采用的编解码标准
StageFright:它是一个框架,替代之前的OpenCore,主要是做了一个OMX层,仅仅对OpenCore的omx-component部分做了引用。StageFright是在MediaPlayerService这一层加入的,和OpenCore是并列的。StageFright在Android 中是以共享库的形式存在的(libstegefright.so),其中model----NuPlayer/AwesomePlayer可以用来播放音视频。
AudioTrack : 音频播放。
VLC : Video LAN Client,是一款自由、开源的跨平台多媒体播放器及框架。
FFmpeg : 多媒体解决方案,不是多媒体框架,广泛用于音视频开发中。
GStreamer : 一套构建流媒体应用的开源多媒体框架。
是用于测量显示帧数的量度。所谓的测量单位为每秒显示的帧数。每秒显示帧数或者帧率表示图形处理器处理场时每秒能够更新的次数。30fps就是可以接受的,60fps则可以明显提升交互感和逼真感,但超过75fps就不容易察觉有明显的流畅度提升了。如果帧率超过屏幕刷新率,则会浪费图像的处理能力。
刷新率是指屏幕每秒画面被刷新的次数,刷新率分为垂直刷新率和水平刷新率,一般提到的刷新率通常是指垂直刷新率。垂直刷新率表示屏幕上图像每秒重绘多少次,也就是每秒屏幕刷新的次数,以Hz为单位。刷新率越高,图像就越稳定,图像显示就越自然清晰,对眼睛的影响也越小。达到80Hz以上的刷新率就可以完全消除图像闪烁和抖动感。
编码的目的是压缩数据量,采用编码算法压缩冗余数据。(MPEG、H.26X)
把编码后的音视频数据以一定格式封装到一个容器中,封装格式有mkv、avi、ts等。
码率也就是比特率,比特率是单位时间播放连续的媒体(如压缩后的音频或视频)的比特数量。比特率越高,带宽消耗得越多。比特(bit)0或1
文件大小(b) = 码率(b/s) * 时长(s)
视频质量和码率、编码算法都有关系。
DTS: 即 Decode Time Stamp,主要是用于标示读入内存中比特率在什么时候开始送入解码器中进行解码
PTS: 即Presentation Time Stamp,主要用于度量解码后的视频帧什么时候被显示出来
常见的视频帧有I、P、B帧等
I 帧表示关键帧,可以理解为这一帧画面的完整保留,解码时只需要本帧数据就可以完成(因为包含完整画面)
P 帧表示的是这一帧和之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
B 帧是双向差别帧,也就是B帧记录的是本帧和前后帧的差别,通过前后画面数据与本帧数据的叠加取得最终的画面。B帧压缩率高,但解码时CPU比较吃力。
音频帧的概念没有那么清晰,跟音频编码格式相关,它是各个编码标准自己实现的。
PCM(未经编码的音频数据)来说,它根本就不需要帧的概念,根据采样率和采样精度就可以播放,比如采样率为44.1kHz,采样进度为16位的音频,
音视频开发需要哪些知识你可以算出比特率是4410016kb/s,每秒的音频数据是固定的4410016/8
字节。
AMR 帧比较简单,它规定每20ms的音频为一帧,每一帧音频都是独立的,有可能采用不同的编码算法以及不同的编码
参数。
MP3帧较复杂,包含更多信息,比如采样率、比特率等各种参数。音频数据帧个数由文件大小和帧长决定,每一帧的长度可能不固定,也可能固定,由比特率决定,每一帧又分为帧头和数据实体两部分,帧头记录了MP3的比特率、采样率、版本等信息,每一帧之间相互独立。
表示可以将模拟信号分成多少个等级,量化精度越高,音乐的声压振幅越接近原音乐。量化精度的单位是bit(比特) 。也可以理解为一个采样点用多少比特表示(8/16/24/32bit)。CD--16bit , DVD--24bit。
每秒音频采样点个数(8000/44100Hz),采样单位用Hz表示。
声道是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或者回放时相应的扬声器数量。单声道、立体声道、4声道、5.1声道、7.1声道等。
Android -- 音视频基础知识
帧,是视频的一个基本概念,表示一张画面,如上面的翻页动画书中的一页,就是一帧。一个视频就是由许许多多帧组成的。
帧率,即单位时间内帧的数量,单位为:帧/秒 或fps(frames per second)。一秒内包含多少张图片,图片越多,画面越顺滑,过渡越自然。 帧率的一般以下几个典型值:
24/25 fps:1秒 24/25 帧,一般的电影帧率。
30/60 fps:1秒 30/60 帧,游戏的帧率,30帧可以接受,60帧会感觉更加流畅逼真。
85 fps以上人眼基本无法察觉出来了,所以更高的帧率在视频里没有太大意义。
这里我们只讲常用到的两种色彩空间。
RGB的颜色模式应该是我们最熟悉的一种,在现在的电子设备中应用广泛。通过R G B三种基础色,可以混合出所有的颜色。
这里着重讲一下YUV,这种色彩空间并不是我们熟悉的。这是一种亮度与色度分离的色彩格式。
早期的电视都是黑白的,即只有亮度值,即Y。有了彩色电视以后,加入了UV两种色度,形成现在的YUV,也叫YCbCr。
Y:亮度,就是灰度值。除了表示亮度信号外,还含有较多的绿色通道量。
U:蓝色通道与亮度的差值。
V:红色通道与亮度的差值。
音频数据的承载方式最常用的是 脉冲编码调制 ,即 PCM 。
在自然界中,声音是连续不断的,是一种模拟信号,那怎样才能把声音保存下来呢?那就是把声音数字化,即转换为数字信号。
我们知道声音是一种波,有自己的振幅和频率,那么要保存声音,就要保存声音在各个时间点上的振幅。
而数字信号并不能连续保存所有时间点的振幅,事实上,并不需要保存连续的信号,就可以还原到人耳可接受的声音。
根据奈奎斯特采样定理:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。
根据以上分析,PCM的采集步骤分为以下步骤:
采样率,即采样的频率。
上面提到,采样率要大于原声波频率的2倍,人耳能听到的最高频率为20kHz,所以为了满足人耳的听觉要求,采样率至少为40kHz,通常为44.1kHz,更高的通常为48kHz。
采样位数,涉及到上面提到的振幅量化。波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号一般是不连续的,所以模拟信号量化以后,只能取一个近似的整数值,为了记录这些振幅值,采样器会采用一个固定的位数来记录这些振幅值,通常有8位、16位、32位。
位数越多,记录的值越准确,还原度越高。
最后就是编码了。由于数字信号是由0,1组成的,因此,需要将幅度值转换为一系列0和1进行存储,也就是编码,最后得到的数据就是数字信号:一串0和1组成的数据。
整个过程如下:
声道数,是指支持能不同发声(注意是不同声音)的音响的个数。 单声道:1个声道
双声道:2个声道
立体声道:默认为2个声道
立体声道(4声道):4个声道
码率,是指一个数据流中每秒钟能通过的信息量,单位bps(bit per second)
码率 = 采样率 * 采样位数 * 声道数
这里的编码和上面音频中提到的编码不是同个概念,而是指压缩编码。
我们知道,在计算机的世界中,一切都是0和1组成的,音频和视频数据也不例外。由于音视频的数据量庞大,如果按照裸流数据存储的话,那将需要耗费非常大的存储空间,也不利于传送。而音视频中,其实包含了大量0和1的重复数据,因此可以通过一定的算法来压缩这些0和1的数据。
特别在视频中,由于画面是逐渐过渡的,因此整个视频中,包含了大量画面/像素的重复,这正好提供了非常大的压缩空间。
因此,编码可以大大减小音视频数据的大小,让音视频更容易存储和传送。
视频编码格式有很多,比如H26x系列和MPEG系列的编码,这些编码格式都是为了适应时代发展而出现的。
其中,H26x(1/2/3/4/5)系列由ITU(International Telecommunication Union)国际电传视讯联盟主导
MPEG(1/2/3/4)系列由MPEG(Moving Picture Experts Group, ISO旗下的组织)主导。
当然,他们也有联合制定的编码标准,那就是现在主流的编码格式H264,当然还有下一代更先进的压缩编码标准H265。
H264是目前最主流的视频编码标准,所以我们后续的文章中主要以该编码格式为基准。
H264由ITU和MPEG共同定制,属于MPEG-4第十部分内容。
我们已经知道,视频是由一帧一帧画面构成的,但是在视频的数据中,并不是真正按照一帧一帧原始数据保存下来的(如果这样,压缩编码就没有意义了)。
H264会根据一段时间内,画面的变化情况,选取一帧画面作为完整编码,下一帧只记录与上一帧完整数据的差别,是一个动态压缩的过程。
在H264中,三种类型的帧数据分别为
I帧:帧内编码帧。就是一个完整帧。
P帧:前向预测编码帧。是一个非完整帧,通过参考前面的I帧或P帧生成。
B帧:双向预测内插编码帧。参考前后图像帧编码生成。B帧依赖其前最近的一个I帧或P帧及其后最近的一个P帧。
全称:Group of picture。指一组变化不大的视频帧。
GOP的第一帧成为关键帧:IDR
IDR都是I帧,可以防止一帧解码出错,导致后面所有帧解码出错的问题。当解码器在解码到IDR的时候,会将之前的参考帧清空,重新开始一个新的序列,这样,即便前面一帧解码出现重大错误,也不会蔓延到后面的数据中。
DTS全称:Decoding Time Stamp。标示读入内存中数据流在什么时候开始送入解码器中进行解码。也就是解码顺序的时间戳。
PTS全称:Presentation Time Stamp。用于标示解码后的视频帧什么时候被显示出来。
前面我们介绍了RGB和YUV两种图像色彩空间。H264采用的是YUV。
YUV存储方式分为两大类:planar 和 packed。
planar如下:
packed如下:
上面说过,由于人眼对色度敏感度低,所以可以通过省略一些色度信息,即亮度共用一些色度信息,进而节省存储空间。因此,planar又区分了以下几种格式:YUV444、 YUV422、YUV420。
YUV 4:4:4采样,每一个Y对应一组UV分量。
YUV 4:2:2采样,每两个Y共用一组UV分量。
YUV 4:2:0采样,每四个Y共用一组UV分量。
其中,最常用的就是YUV420。
YUV420属于planar存储方式,但是又分两种类型:
YUV420P:三平面存储。数据组成为YYYYYYYYUUVV(如I420)或YYYYYYYYVVUU(如YV12)。
YUV420SP:两平面存储。分为两种类型YYYYYYYYUVUV(如NV12)或YYYYYYYYVUVU(如NV21)
原始的PCM音频数据也是非常大的数据量,因此也需要对其进行压缩编码。
和视频编码一样,音频也有许多的编码格式,如:WAV、MP3、WMA、APE、FLAC等等,音乐发烧友应该对这些格式非常熟悉,特别是后两种无损压缩格式。
但是,我们今天的主角不是他们,而是另外一个叫AAC的压缩格式。
AAC是新一代的音频有损压缩技术,一种高压缩比的音频压缩算法。在MP4视频中的音频数据,大多数时候都是采用AAC压缩格式。
AAC格式主要分为两种:ADIF、ADTS。
ADIF:Audio Data Interchange Format。音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。这种格式常用在磁盘文件中。
ADTS:Audio Data Transport Stream。音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。
ADIF数据格式:
ADTS 一帧 数据格式(中间部分,左右省略号为前后数据帧):
AAC内部结构也不再赘述,可以参考AAC 文件解析及解码流程
细心的读者可能已经发现,前面我们介绍的各种音视频的编码格式,没有一种是我们平时使用到的视频格式,比如:mp4、rmvb、avi、mkv、mov...
没错,这些我们熟悉的视频格式,其实是包裹了音视频编码数据的容器,用来把以特定编码标准编码的视频流和音频流混在一起,成为一个文件。
例如:mp4支持H264、H265等视频编码和AAC、MP3等音频编码。
我们在一些播放器中会看到,有硬解码和软解码两种播放形式给我们选择,但是我们大部分时候并不能感觉出他们的区别,对于普通用户来说,只要能播放就行了。
那么他们内部究竟有什么区别呢?
在手机或者PC上,都会有CPU、GPU或者解码器等硬件。通常,我们的计算都是在CPU上进行的,也就是我们软件的执行芯片,而GPU主要负责画面的显示(是一种硬件加速)。
所谓软解码,就是指利用CPU的计算能力来解码,通常如果CPU的能力不是很强的时候,一则解码速度会比较慢,二则手机可能出现发热现象。但是,由于使用统一的算法,兼容性会很好。
硬解码,指的是利用手机上专门的解码芯片来加速解码。通常硬解码的解码速度会快很多,但是由于硬解码由各个厂家实现,质量参差不齐,非常容易出现兼容性问题。
MediaCodec 是Android 4.1(api 16)版本引入的编解码接口,是所有想在Android上开发音视频的开发人员绕不开的坑。
由于Android碎片化严重,虽然经过多年的发展,Android硬解已经有了很大改观,但实际上各个厂家实现不同, 还是会有一些意想不到的坑。
相对于FFmpeg,Android原生硬解码还是相对容易入门一些,所以接下来,我将会从MediaCodec入手,讲解如何实现视频的编解码,以及引入OpenGL实现对视频的编辑,最后才引入FFmpeg来实现软解,算是一个比较常规的音视频开发入门流程吧。
音视频开发三大就业方向
音视频开发,无论你做iOS/Android/Qt客户端,还是嵌入式linux,服务器开发。最后可分为三大就业方向:
1 流媒体网络通讯开发
流媒体网络通讯开发岗位 占70%~ 80%,就业,集中在芯片,安防,数字电视,广告,行车记录仪,车载系统,智能家居,楼宇对讲,视频会议....大部分从业者吃饭靠这个领域。需要掌握的是unix操作系统,网络socket通讯, 音视频基础,264/265基础,编解码,FFmpeg,常见的网络通讯协议TCP/UDP/RTMP/RTSP/RTP/HLS,当然还有WebRTC. 为什么大部分就业岗位都在这个领域,因为这个领域百花齐放,大量的硬件公司,各行各业,光一个跟摄像头相关的安防产业年产值就是几万亿,只要有摄像头的地方,就需要软件开发者,而且薪水还不错,入门者大部分年薪30W+。年薪50W,百万级的程序员也有,主要研究音视频流媒体领域的应用。
2 数字图像处理
音视频图像处理岗位,占大约20%+。主要集中在视频剪辑,特效,医疗,教育领域. 最近几年新兴的VR/AR领域。需要掌握的主要是音视频开发基础,FFmpeg, 重点是OpenGL/ES,会大量使用OpenGL/ES去写一些轻量级的渲染引擎。你可以把它看作一个精简版的游戏渲染引擎。这个领域有些特殊,容易跟互联网结合,一些软件容易形成垄断,比如视频剪辑领域,就那么三四个玩家。垄断了80%以上的份额。Finalcut pro , premire, Davinci.. 形成垄断的行业,绝大多数利润会向头部集中,也就不需要那么多就业,细分领域不多。
当然,这个领域也有自己的一些优势,比如比流媒体容易学习一些。未来十年前景也非常好。可以快速上手。c c++基础好,精通OpenGL/FFmpeg,可以轻松上年薪50W+.
3 AI
小于5% 其实AI本来应该发展很迅猛的,但受限于MYZ,疫情,芯片严重缺货。终端,边缘计算领域,这几年还没发展起来。这个领域需要部分音视频基础 opencv,tensorflow,机器学习,深度学习...
总结
三大方向,基础都差不多。c/c++ unix操作系统,网络通讯.
最后每个人的发展侧重点不一样,有的做网络通讯比较多,有的做数字图像处理… 计算机领域的知识很庞大,就一个音视频这么小的一个领域,你就只能做其中一个点,比如专注网络通讯流媒体,专注图像处理。都是十年磨一剑的领域,想通吃,就准备花大量的时间研究学习,熬夜。甚至准备进ICU,腰椎间盘突出... 所以即使在音视频开发领域,最后选择一个自己喜欢的方向依然重要。
有的人在做iOS,有的人在做安卓,有的人在做嵌入式linux,还有的人在做PC/Qt开发。
到最后你发现都大同小异。
无论你做什么,人一辈子,要做到终身学习,每天学习。
每天进步一点点。日积月累,才能有所成就。
Android音视频【八】音频基础
前些文章讲了视频,我们开始音频。
开始介绍前,先看一个声音的波形图:
声音是一种压力波,当敲击键盘或者撞击物体时,它们的震动会引起空气的震动,使空气产生疏密变化,由此就形成了一种声波。
声波的三要素是频率、振幅、和波形,频率代表音阶的高低,振幅代表响度,波形代表音色。
频率 : 频率 越高,波长越短,低频声响的波长则越长,所以更容易越过障碍物,能量衰减就小,声音传播的就远。反之则会得到相反的结论。
振幅:用不同的力度敲击物体,它的声音大小不一样,它的能量也不一样,声音越大振幅越高。
波形/音色: 音色就是在同样的频率(音调)和响度(振幅)下,敲击键盘或者撞击物体是完全不同的。波的形状代表了声音的音色。
如何进行声音进行保存呢? 对声音的采样常用麦克风等设备将声音信号转换成电信号,再用模/数转换器将电信号转换成一串用1和0表示的二进制数字(数字信号)。每秒对声音采样上万次,获得上万个按照时间顺序排列的二进制数字,然后将连续变化不断的声音转化成了计算机可储存并识别的二进制数字。
为了将模拟信号数字化,需要进行:采样,量化,编码。
首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化。根据奈奎斯特定理(也称采样定理),按比声音最高频率高 2 倍以上的频率对声音进行采样,对于高质量的音频信号,其频率范围在 20Hz ~ 20kHz ,所以采样频率一般为 44.1kHz ,这样就保证采样声音达到 20kHz 也能被数字化,从而使得经过数字化处理之后,人耳听到的声音质量不会被降低。而所谓的 44.1 kHz 就是代表 1 s 会采样 44100 次。
每个采样又该如何表示呢?进行量化。量化是指在幅度轴上对信号进行数字化。量化位数越大,声音的质量越高。常用的量化位数有8位、16位和32位。量化位数指用几位二进制数来存储采样获得的数据。量化位数为8即指用8位二进制数来存储数据,如0001011
比如用 16 bit 的二进制信号来表示声音的一个采样,而 16 bit 所表示的范围是 [-32768 , 32767] , 共有 65536 个可能取值,因此最终模拟的音频信号在幅度上也分为了 65536 层。
编码,就是按照一定的格式记录采样和量化后的数字数据,比如顺序存储或压缩存储等等。
这里涉及了很多种格式,通常所说的音频的裸数据就是 PCM (Pulse Code Modulation) 数据。描述一段 PCM 数据一般需要以下几个概念:量化格式(sampleFormat)、采样率(sampleRate)、声道数 (channel) 。以 CD 的音质为例:量化格式为 16 bit (2 byte),采样率 44100 ,声道数为 2 ,这些信息就描述了 CD 的音质。而对于声音的格式,还有一个概念用来描述它的大小,称为数据比特率,即 1s 时间内的比特数目,它用于衡量音频数据单位时间内的容量大小。而对于 CD 音质的数据,比特率为多少呢? 计算如下:
那么在一分钟里,这类 CD 音质的数据需要占据多大的存储空间呢?计算如下:
当然,如果 sampleFormat 更加精确 (比如用 4 个字节来描述一个采样),或者 sampleRate 更加密集 (比如 48kHz 的采样率), 那么所占的存储空间就会更大,同时能够描述的声音细节就会越精确。存储的这段二进制数据即表示将模拟信号转为数字信号了,以后就可以对这段二进制数据进行存储,播放,复制,或者进行其它操作。
关于这3个过程,可以看下这篇文章,图形表示采样,量化,编码的过程更容易理解。 https://www.bilibili.com/read/cv1771961/
所以说:
1)采样:在时间轴上对信号数字化;
2)量化:在幅度轴上对信号数字化;
3)编码:按一定格式记录采样和量化后的数字数据。
声道(sound channel)是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的声音源数量或者回放时相应的扬声器数量。
常见的有:单声道,立体声道,4声道,5.1声道,7.1声道等。在移动端一般是单声道,立体声道。
上面提到了 CD 音质的数据采样格式,曾计算出每分钟需要的存储空间约为 10.09 MB ,如果仅仅是将其存储在光盘或者硬盘中,可能是可以接受的,但是若要在网络中实时在线传输的话,那么这个数据量可能就太大了,所以必须对其进行压缩编码。压缩编码的基本指标之一就是压缩比,压缩比通常小于 1 。压缩算法包括有损压缩和无损压缩。无损压缩是指解压后的数据可以完全复原。在常用的压缩格式中,用的较多的是有损压缩,有损压缩是指解压后的数据不能完全恢复,会丢失一部分信息,压缩比越小,丢失的信息就比越多,信号还原后的失真就会越大。根据不同的应用场景 (包括存储设备、传输网络环境、播放设备等),可以选用不同的压缩编码算法,如 PCM 、WAV、AAC 、MP3 、Ogg 等。
WAV 编码就是在 PCM 数据格式的前面加了 44 个字节,分别用来存储 PCM 的采样率、声道数、数据格式等信息。
特点: 音质好,大量软件支持。
场景: 多媒体开发的中间文件、保存音乐和音效素材。
MP3 具有不错的压缩比,使用 LAME 编码 (MP3 编码格式的一种实现)的中高码率的 MP3 文件,听感上非常接近源 WAV 文件,当然在不同的应用场景下,应该调整合适的参数以达到最好的效果。
特点: 音质在 128 Kbit/s 以上表现还不错,压缩比比较高,大量软件和硬件都支持,兼容性好。
场景: 高比特率下对兼容性有要求的音乐欣赏。
AAC 是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如 PS 、SBR) 等,衍生出了 LC-AAC 、HE-AAC 、HE-AAC v2 三种主要的编码格式。LC-AAC 是比较传统的 AAC ,相对而言,其主要应用于中高码率场景的编码 (=80Kbit/s) ; HE-AAC 相当于 AAC + SBR 主要应用于中低码率的编码 (<= 80Kbit/s); 而新推出的 HE-AAC v2 相当于 AAC + SBR + PS 主要用于低码率场景的编码 (<= 48Kbit/s) 。事实上大部分编码器都设置为 <= 48Kbit/s 自动启用 PS 技术,而 48Kbit/s 则不加 PS ,相当于普通的 HE-AAC。
特点: 在小于 128Kbit/s 的码率下表现优异,并且多用于视频中的音频编码。
场景: 128 Kbit/s 以下的音频编码,多用于视频中音频轨的编码。
Ogg 是一种非常有潜力的编码,在各种码率下都有比较优秀的表现,尤其是在中低码率场景下。Ogg 除了音质好之外,还是完全免费的,这为 Ogg 获得更多的支持打好了基础,Ogg 有着非常出色的算法,可以用更小的码率达到更好的音质,128 Kbit/s 的 Ogg 比 192kbit/s 甚至更高码率的 MP3 还要出色。但是目前因为还没有媒体服务软件的支持,因此基于 Ogg 的数字广播还无法实现。Ogg 目前受支持的情况还不够好,无论是软件上的还是硬件上的支持,都无法和 MP3 相提并论。
特点: 可以用比 MP3 更小的码率实现比 MP3 更好的音质,高中低码率下均有良好的表现,兼容性不够好,流媒体特性不支持。
场景: 语言聊天的音频消息场景。
压缩编码的原理实际上就是压缩调冗余信号,冗余信号是指哪些不能被人感知到的信号,包含人耳听觉范围之外的音频信号以及被屏蔽掉的音频信号等,这些冗余信息进行编码处理。
一般在音视频通话,直播中,短视频,以及大部分的视频都是用aac编码。
本篇主要是介绍了音频的一些基础知识和概念,对于后续学习音频的编解码有帮助,而不会一脸懵。
备注
关于音视频开发需要哪些知识和音视频技术基础知识的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
音视频开发需要哪些知识的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于音视频技术基础知识、音视频开发需要哪些知识的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~