音视频相关技术基础知识总结

简介: 音视频相关技术基础知识总结

前阵子写了很多笔记,由于忙于研究生课程学习,故很少有时间整理笔记分享到公众号上,今天整理的笔记是我之前学习音视频技术相关的笔记整理。

1、视频

1.1、视频帧

帧,是视频的一个基本概念,表示一张画面,一个视频就是由许许多多的帧组成的。

1.2、帧率

即单位内帧的数量,单位为:帧/秒 或 fps(frames per second),一秒内包含多少张图片,图片越多,画面越顺滑,过渡越自然。


常见的帧率典型值:


(1)24/25 fps:1秒24/25帧,一般的电影频率。


(2)30/60 fps:1秒30/60帧,游戏的频率,30帧可以接受,60帧会感觉更加流畅逼真


(3)85fps:这个帧率及以上人眼基本无法察觉出来,更高的帧率在视频里没有太大意义。

2、色彩空间

2.1、RGB

通过R、G、B三种基础色,可以混合出所有的颜色

2.2、YUV

也叫,YCbCr,是一种亮度与色度分离的色彩格式


(1)Y:亮度,就是灰度值,出了表示亮度信号外,还含有较多的绿色通道量


(2)U:蓝色通道与亮度的差值


(3)V:红色通道与亮度的差值


优势:


人眼对亮度敏感,对色度不敏感,因此减少部分UV的数据量,人眼却无法感知出来,这样可以通过压缩UV分辨率,在不影响感观的前提下,减少视频的体积。

2.3、RGBYUV的换算

(1)RGBYUV算法


Y = 0.299R + 0.587G + 0.114B


U = -0.147R - 0.289G + 0.436B


V = 0.635R - 0.515G - 0.100B


(2)YUVRGB算法


R = Y + 1.14V


G = Y - 0.39U - 0.58V


B = Y + 2.03U

3、音频

3.1、基本知识

人类能够听到的所有声音都称之为音频,在计算机中,音频只是存储在计算机里的声音。


PCM:音频数据的承载方式最常用的是脉冲编码调制


在自然界中,声音是连续不断的,是一种模拟信号,那怎样才能把声音保存下来呢?就是将这些模拟信号数字化,即模数转换,将模拟信号转换为数字信号。


声音是一种波,由自己的振幅和频率,那么要保存声音,就要保存声音在各个时间点上的振幅。而数字信号并不能连续保存所有时间点的振幅。


奈奎斯特采样定理:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频率中最高频率的2倍。

3.2、采样率和采样位数

(1)采样率


根据奈奎斯特采样定理,人耳能听到的最高频率为20KHz,所以为了满足人耳的听觉要求,采样率至少为40KHz,通常为44.1KHz,更高的通常为48KHz


注意:人耳听觉频率范围[20Hz,20KHz]


(2)采样位数


波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号一般是不连续的,所以模拟信号量化后,只能取一个近似的整数值,为了记录这些振幅值,采样器会采用一个固定的位数来记录这些振幅值,通常有8位、16位、32位。


注意:位数越多,记录的值越准确,还原度越高,但是占用的硬盘空间越大。

位数 最小值 最大值
8 0 255
16 -32768 32767
32 -2147483648 2147483647
3.3、音频编码

由于数字信号是由0、1组成的,因此,需要将幅度值转化为一系列0和1进行存储,也就是编码。

3.4、PCM的采集步骤

模拟信号->采样(奈奎斯特采样定理)->量化->编码->数字信号

640.png

3.5、声道数

声道数是指支持能不同发声(注意是不同声音)的音响的个数。


  • 单声道:1个声道
  • 双声道:2个声道
  • 立体声道:默认为2个声道
  • 立体声道(4声道):4个声道
3.6、码率

码率是指一个数据量中每秒钟能通过的信息量,单位bps(bit per second)


码率 = 采样率 * 采样位数 * 声道数

3.7、常见的音频格式

CD格式、WAVE(*.WAV)、AIFFMP3MIDIAACWMAOggVorbis

4、FFmpeg

4.1、FFmpeg是什么?

是一套可以用来记录、转化数字音频、视频、并能将其转化为流的开源计算机程序。它有着非常强大的功能,主要包括:视频采集功能、视频格式转换、视频抓图、给视频加水印等。

4.2、FFmpeg的组成

FFmpeg由三个部分组成:


(1)工具


分别是ffmpegffplayffserverffprobe


ffmpeg:音视频转码、转换器


ffplay:简单的音视频播放器


ffserver:流媒体服务器


ffprobe:简单的多媒体码流分析器

640.png

(2)SDK


提供开发者使用的SDK,我们可以根据自己的需求使用这些库开发自己的应用程序,这些库主要有:


libavcodec:包含音视频编码器和解码器


libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能


libavformat:包含多种多媒体容器格式的封装、解封装工具


libavfilter:包含多媒体处理常用的滤镜功能


libavdevice:用于音视频数据采集和渲染等功能的设备相关


libswscale:用于图像缩放和色彩空间和像素格式转换功能


libswresample:用于音频量采样和格式转换等功能


libpostproc:用于后期处理,当我们使用filter的时候,需要打开这个模块,filter会用到这个模块里的一些基础函数


(3)源代码

整个工程的源代码,无论是编译出来的可执行程序还是SDK


它的源代码由C语言实现,主要在Linux平台上进行开发。

目录
相关文章
|
6月前
|
编解码 监控 C++
C++音视频编程探秘
C++音视频编程探秘
223 1
|
存储 编解码 算法
音视频入门基础理论知识
音视频入门基础理论知识
135 0
|
Web App开发 编解码 安全
音视频绕不开的话题之WebRTC
闲来无事,我们今天探讨下音视频绕不开的一个话题:WebRTC。WebRTC之于音视频行业,无异于FFMpeg,可以说WebRTC的开源,让音视频行业大跨步进入发展快车道。
184 0
|
5月前
|
编解码 算法
音视频主要概念
音视频主要概念
|
11月前
|
编解码 算法 大数据
即时通讯技术文集(第25期):实时音视频基础入门 [共20篇]
​为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第25 期。
57 1
|
11月前
|
Web App开发 编解码 小程序
即时通讯技术文集(第24期):音视频WebRTC好文合集 [共20篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 24 期。
75 0
|
编解码
音视频基础概念
音视频基础概念
|
存储 编解码 缓存
[笔记]音视频学习之视音频数据处理入门《三》H264
[笔记]音视频学习之视音频数据处理入门《三》H264
188 0
|
编解码 数据处理 数据格式
[笔记]音视频学习之视音频数据处理入门《四》AAC
[笔记]音视频学习之视音频数据处理入门《四》AAC
|
存储 编解码 图形学
音视频进阶知识
音视频进阶知识