音视频学习—音视频理论基础(1)

音视频学习—音视频理论基础(1)

  • 一、音视频处理流程
    • 1.1 音频处理流程
    • 1.2 视频处理流程
    • 1.3 音视频数据流转
    • 1.4 为什么音视频采集完之后,不能直接传输,要进行编码?
    • 1.5 模数转换
    • 1.6 PCM
    • 1.7 WAV
  • 总结


一、音视频处理流程

  音视频通信是指将音频和视频数据从一个端点传输到另一个端点的过程。通常,音视频通信流程包括音视频采集、编码、传输、解码和渲染五个主要环节。下面是更详细的描述:

  音视频采集:音视频采集是指将麦克风、摄像头等音视频设备中的模拟信号转换成数字信号的过程。这个数字信号可以是PCM音频数据或者视频帧。在采集过程中需要确定采样率、采样精度等参数。

  音视频编码:音视频编码是指将数字信号转换成可传输或存储的格式的过程。常见的音视频编码格式有H.264、H.265、VP8、VP9、AAC、MP3等。编码后的音视频数据可以更有效地进行传输和存储。

  传输:音视频数据传输可以通过网络或者本地传输。在传输过程中需要注意网络带宽、延迟、丢包等因素。传输过程中的数据可以通过一些协议进行控制和优化,如RTP、RTCP、STUN等。

  音视频解码:音视频解码是指将接收到的音视频数据解码成原始的数字信号的过程。解码器需要知道解码的格式和参数。解码后的音视频数据可以用于播放或者后续处理。

  音视频渲染:音视频渲染是指将解码后的音视频数据还原成模拟信号,输出到扬声器或者显示器上。在渲染过程中需要注意音频音量控制和视频的帧率、分辨率等参数。

  下面为具体的音频和视频处理流程:

1.1 音频处理流程

  音频处理是将声音信号进行数字化、处理和还原的过程。音频处理流程包括以下几个步骤:

  采集:将声音信号从模拟信号转换成数字信号。采集可以通过麦克风、音频接口等设备进行。采集过程中需要注意采样率和位深度的设置,采样率表示每秒采集的样本数,位深度表示每个采样值所占用的位数。

  预处理:对采集到的音频信号进行一些预处理,如滤波、降噪、增益调整等。这些预处理步骤有助于减少噪音、改善音质。

  数字信号处理(DSP):对数字信号进行一系列的数字信号处理,如均衡器、压缩器、限幅器、混响器等。这些数字信号处理步骤可以改变音频的频率响应、动态范围、时域特性等。

  编码:将数字信号编码成可传输或存储的格式,如MP3、AAC、WAV等。在编码过程中需要选择适当的编码算法和参数设置,以达到合适的压缩比和音质。
传输或存储:将编码后的音频信号进行传输或存储。音频信号可以通过网络传输,也可以存储到本地硬盘或其他存储介质上。

  解码:将传输或存储的音频信号解码成数字信号,以便进行后续的数字信号处理或者还原成模拟信号输出。

  输出:将数字信号转换成模拟信号输出,如通过扬声器、耳机等设备输出。在输出过程中需要注意音量控制和音质保护。

1.2 视频处理流程

  视频处理流程包括以下主要步骤:

  视频采集:采集视频信号源,如摄像头、录像机、电视等,将模拟视频信号转换成数字视频信号,通常使用视频采集卡或者专业视频采集设备。

  视频编码:将原始数字视频信号进行压缩编码,减少数据量,便于传输和存储。常见的视频编码标准包括H.264、H.265、MPEG-4、AVC等。

  视频传输:将编码后的视频数据通过网络或者传输介质传输到接收端。视频传输涉及到网络传输协议、传输带宽、网络延迟等因素。

  视频解码:接收端使用相应的解码器对传输过来的视频数据进行解码,还原出原始的数字视频信号。

  视频处理:对解码后的视频信号进行各种处理,如裁剪、旋转、调整亮度、对比度、色彩等,实现特殊效果和优化处理。

  视频渲染:将处理后的视频信号渲染成可视化的视频画面,通常使用显示器、投影仪等设备进行展示。

1.3 音视频数据流转

  音视频的流转简单来说就是:PCM(采集数据的格式,数字信号)-> acc/mp3(编码器)-> mp4/flv(套一层马甲,生成多媒体文件),详细来讲就是:

  首先,在音视频采集过程中,通常需要将模拟信号转换成PCM格式的数字信号,以便于后续的处理和传输。

  然后,PCM格式的音频数据需要进行压缩,以便于存储和传输。常见的压缩格式包括AAC、MP3等。这些压缩格式通常采用有损压缩算法,即通过去除一些听觉上不太明显的音频信号,来减少数据量和提高压缩比。在进行压缩时,可以设置一些编码参数,如码率、采样率、声道数、编码质量等。这些参数的设置会影响到压缩后的音频质量和数据量。

  最后,压缩后的音频数据可以通过容器格式进行打包,生成多媒体文件。常见的容器格式包括MP4、FLV、AVI等。容器格式可以包含音频、视频、字幕、元数据等多种媒体数据,同时还可以提供索引和元数据信息,方便多媒体文件的管理和播放。

1.4 为什么音视频采集完之后,不能直接传输,要进行编码?

  音视频数据采集之后,得到的是原始的模拟信号或数字信号,这些信号通常是非常庞大的,无法直接传输或存储。同时,由于音视频数据传输具有时延和带宽等限制,需要进行压缩以减少数据量,保证数据传输的实时性和稳定性。

  音视频编码可以将音视频信号转换成压缩格式,以减少数据量和提高传输效率。编码可以根据不同的应用场景和需求,选择不同的编码格式和编码参数。常见的音视频编码格式包括H.264、H.265、VP8、VP9、AAC、MP3等,它们各自具有不同的压缩比、编码质量、延迟等特点,可以根据实际情况进行选择和优化。

  因此,进行音视频编码可以提高数据传输的效率,降低带宽成本,同时也可以提高音视频质量,减少传输延迟。采集完音视频数据之后,必须对其进行编码才能使其适合进行传输和存储。

1.5 模数转换

  音视频模数转换(ADC/DAC)是指将模拟信号转换成数字信号或将数字信号转换成模拟信号的过程。在音视频领域,模数转换通常用于音视频的采集和输出,以便于数字信号的处理和传输。

  首先,将模拟信号转换成数字信号的过程被称为ADC(模数转换器)。ADC接受模拟信号输入,并将其转换成数字信号。这个过程分为三个主要步骤:
采样:模拟信号在时间轴上进行采样,即周期性地测量信号的幅值,并将其转换成数字值。采样的频率被称为采样率,通常以Hz为单位表示。

  量化:将采样后的模拟信号幅值转换成数字值的过程称为量化。量化的精度通常由量化位数(即每个采样值的位数)来衡量。例如,16位的ADC可以将每个采样值转换成一个16位的数字值。

  编码:将量化后的数字值编码成特定格式的二进制码流。编码的格式通常与音频数据的压缩格式有关,如PCM、AAC、MP3等。
接下来是数字信号转换成模拟信号的过程,被称为DAC(数字模拟转换器)。DAC接受数字信号输入,并将其转换成模拟信号。这个过程与ADC相反,分为三个步骤:

  解码:将二进制码流解码成数字值。

  量化:将数字值转换成幅值,即将数字信号离散化成一系列幅度值。
重建:将量化后的数字信号转换成模拟信号。这个过程涉及到信号重建滤波器,通常是一个低通滤波器,以平滑模拟信号的波形,防止信号中出现干扰。

  总的来说,音视频模数转换是音视频处理中重要的步骤,将模拟信号转换成数字信号或将数字信号转换成模拟信号。这个过程需要采样、量化、编码、解码、重建等多个步骤,对音视频信号的质量和处理效果有很大影响。

1.6 PCM

  PCM(Pulse Code Modulation)是指脉冲编码调制,是一种用于模拟信号数字化的标准方法。PCM将模拟信号通过采样、量化、编码等处理,转换成数字信号,从而可以方便地进行数字信号的存储、处理和传输。PCM通常采用的量化方法是线性量化,采用的编码方法是二进制编码。PCM的采样位数和采样率决定了数字音频的精度和质量,通常采用16位或24位采样位数,采样率则通常为44.1kHz或48kHz。

  PCM码率计算:
在这里插入图片描述

1.7 WAV

  WAV是指Windows Audio File,是一种使用PCM编码的数字音频文件格式。WAV文件格式由Microsoft和IBM联合开发,是Windows系统中常见的音频文件格式之一。WAV文件是无损的数字音频格式,支持多种采样位数和采样率,通常支持16位、24位和32位的采样位数,以及44.1kHz、48kHz、96kHz等不同的采样率。WAV文件可以存储单声道或双声道的音频数据,支持使用各种编码器进行压缩和解压缩,但由于采用的是无损压缩算法,因此WAV文件通常较大,不适合网络传输或存储空间有限的设备。

  具体来讲,WAV包括以下几个方面的内容:

  音频数据:WAV文件中包含采样后的数字音频数据,这些数据是经过量化和编码后的,以二进制形式存储。WAV文件支持多种采样位数和采样率,通常采用16位或24位的采样位数,以及44.1kHz或48kHz的采样率。

  头部信息:WAV文件的头部包含了音频数据的基本信息,如采样率、采样位数、声道数等。头部信息也包含了WAV文件的格式信息,如文件类型、块大小、格式子块等。WAV文件头部通常占据文件的前44个字节。

  格式子块:WAV文件中还包括了格式子块,用于描述音频数据的格式。格式子块包含了音频数据的格式类型、声道数、采样率、平均字节率、块对齐字节数等信息。

  数据块:WAV文件中的数据块存储了音频数据的实际内容,包括了每个采样点的采样值。数据块的大小取决于音频数据的大小,通常为文件总大小减去头部信息和格式子块的大小。

  总的来说,WAV文件包含了音频数据、头部信息、格式子块和数据块等内容,是一种常见的无损音频文件格式。WAV文件的结构和内容在数字音频处理和应用中具有重要的作用,需要深入理解和掌握。

WAV 文件头部信息包括以下内容:
ChunkID:4 字节,文件标识符,固定值为 "RIFF"。
ChunkSize:4 字节,整个文件长度(不包括 ChunkID 和 ChunkSize 所占的字节数)。
Format:4 字节,文件格式标识符,固定值为 "WAVE"。
Subchunk1ID:4 字节,子块标识符,固定值为 "fmt "。
Subchunk1Size:4 字节,子块大小,一般为 16。
AudioFormat:2 字节,音频格式,如 PCM 等。
NumChannels:2 字节,声道数,如单声道、立体声等。
SampleRate:4 字节,采样率,表示每秒采样次数。
ByteRate:4 字节,数据传输速率,表示每秒传输的字节数。
BlockAlign:2 字节,数据块对齐单位,表示每个采样块所占的字节数。
BitsPerSample:2 字节,采样位数,如 8 位、16 位等。
Subchunk2ID:4 字节,子块标识符,固定值为 "data"。
Subchunk2Size:4 字节,子块大小,表示音频数据的长度。

  其中,Subchunk1 和 Subchunk2 是 WAV 文件中的两个子块,分别存储文件格式信息和音频数据信息。这些头部信息对于解码和播放 WAV 文件非常重要,因为它们提供了必要的参数和元数据,帮助解码器正确地读取和解码音频数据。

在这里插入图片描述
在这里插入图片描述

  WAV 格式文件包含多个子块,其中两个最为重要,分别是 fmt 和 data 子块。

  fmt 子块:存储音频格式信息,包括采样率、声道数、采样位数等。一般情况下,这个子块的大小是 16 字节,但是也可能有其他大小。这个子块的标识符是 "fmt "(注意末尾有一个空格字符)。

  data 子块:存储实际的音频数据,这个子块的大小由音频数据的长度决定。这个子块的标识符是 “data”。

  此外,WAV 文件还可以包含其他子块,比如 LIST 和 fact 子块,用于存储附加信息或者
数据样本的数量等。这些子块不是必需的,而且其格式和用途也比较复杂,因此在一般情况下,解码器只需要关注 fmt 和 data 子块即可。

  总的来说,PCM是一种数字音频编码标准,用于将模拟信号数字化,而WAV是一种基于PCM编码的数字音频文件格式,用于存储和传输数字音频数据。PCM和WAV在数字音频处理和应用中具有重要的作用,是数字音频领域中必须掌握的基础知识。


总结

  本文介绍了音视频处理的基本概念和流程,以及音频文件格式WAV的详细格式规范。包括音视频通信的五个主要环节:采集、编码、传输、解码和渲染。以及音频和视频具体处理流程。还详细解析了数字音频的基础概念:PCM编码标准和WAV文件格式。说明了它们在数字音频应用中的重要性。

  为了方便交流,我创建了一个后端和音视频技术的qq群,群号:333138957(可以扫下面的码加群)。

  如果你对音视频和后端开发感兴趣,欢迎加入我们进行深入交流。共同学习,携手推进行业发展!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

漫途水产养殖水质智能监测方案,科技助力养殖业高效生产!

随着水产养殖业的蓬勃发展,水质和饲料等多重因素逐渐成为影响其持续健康发展的关键因素。由于传统养殖模式因监控和调节手段不足,往往造成养殖环境的恶化。需要通过智能化养殖,调控养殖环境,实现养殖的精细化管理模式,…

Bug的定义生命周期

1、bug的定义 你们觉得bug是什么? 软件的Bug狭义概含是指软件程序的漏洞或缺陷, 广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节(增强性,建议性)、或 与需求文档存在差异的功能实现等。 我们的职责就是,发现这些B…

Orangepi Zero2 wiringPi外设库SDK安装

文章目录 1. sdk 下载2. sdk 使用 1. sdk 下载 1、使用git 下载 # apt-get update # apt-get install -y git # git clone https://github.com/orangepi-xunlong/wiringOP.git2、手动下载并上传 下载连接 https://github.com/orangepi-xunlong/wiringOP 选master分支 上传到…

【vue】跨组件通信--依赖注入

import { provide,inject } from vue provide&#xff1a;将父组件的数据传递给所有子组件&#xff08;子孙都有&#xff09;inject&#xff1a;接收provide 项目文件结构 App.vue是Header.vue的父组件&#xff0c;Header.vue是Nav.vue的父组件 传值过程 App.vue <tem…

Python学习笔记20 - 模块

什么叫模块 自定义模块 Python中的包 Python中常用的内置模块 第三方模块的安装与使用

计算机网络——DHCP协议

前言 本博客是博主用于复习计算机网络的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结&#xff0c;讲的非常好。 可以先去看一篇视频&#xff0c;再来参考这篇笔记&#xff08;或者说直接偷走&#xff09;。 …

funasr 麦克风实时流语音识别;模拟vad检测单独输出完整每句话

参考: https://github.com/alibaba-damo-academy/FunASR chunk_size 是用于流式传输延迟的配置。[0,10,5] 表示实时显示的粒度为 1060=600 毫秒,并且预测的向前信息为 560=300 毫秒。每个推理输入为 600 毫秒(采样点为 16000*0.6=960),输出为相应的文本。对于最后一个语音…

【学习】软件测试需求分析要从哪些方面入手

软件测试需求分析是软件测试过程中非常重要的一个环节&#xff0c;它是为了明确软件测试的目标、范围、资源和时间等要素&#xff0c;以确保软件测试的有效性和全面性。本文将从以下几个方面对软件测试需求分析进行详细的阐述&#xff1a; 一、软件测试目标 软件测试目标是指…

机器学习周记(第三十四周:文献阅读[GNet-LS])2024.4.8~2024.4.14

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文摘要 1.3 论文模型 1.3.1 数据处理 1.3.2 GNet-LS 2 相关代码 摘要 本周阅读了一篇时间序列预测论文。论文模型为GNet-LS&#xff0c;主要包含四个模块&#xff1a;粒度划分模块&#xff08;GD&#xff09;&…

RabbitMQ消息模型之Work消息模型

Work消息模型 * work模型&#xff1a; * 多个消费者消费同一个队列中的消息&#xff0c;每个消费者获取到的消息唯一&#xff0c;且只能消费一次 * 作用&#xff1a;提高消息的消费速度&#xff0c;避免消息的堆积 * 默认采用轮询的方式分发消息 * 如果某…

无人机/飞控--ArduPilot、PX4学习记录(5)

这几天看dronekit&#xff0c;做无人机失控保护。 PX4官网上的经典案例&#xff0c;我做了很多注解&#xff0c;把代码过了一遍。 无人机具体执行了&#xff1a; 先起飞&#xff0c;飞至正上空10m->向北移动10m->向东移动10m->向南移动10m->向西移动10m->回到初…

mysql题目5

tj11&#xff1a; select max(c.teacher_age) 最大的年龄 from tb_teacher c tj12: select a.class_name 班级名称,b.student_name 学生姓名,b.gender 学生性别 from tb_class a join tb_student b on a.class_idb.class_id join tb_teacher c on a.teacher_idc.teacher_id w…

kubekey 离线安装harbor、k8s、kubesphere

目录 参考文献 了解kubekey 英文和中文 前提条件 部署准备 下载kubukey 离线包配置和制作 配置离线包 制作离线包 离线安装集群 复制KubeKey 和制品 artifact到离线机器 创建初始换、安装配置文件 安装镜像仓库harbor 初始化harbor 项目 修改配置文件 安装k8s集…

实战--------部署搭建ELFK+zookeeper+kafka架构

目录 一、部署jdk环境 二、搭建Elasticsearch 三、搭建logstash 四、搭建kibana服务 五、搭建filebeat服务 六、搭建zookeeper与kafka服务 七、部署ELFKzookeeperkafka Filebeat/Fluentd&#xff1a;负责从各服务器节点上实时收集日志数据&#xff0c;Filebeat轻量级&am…

面试八股——Spring——AOP与事务

AOP的定义 事务的实现 事务的失效场景 异常捕获处理 下图中由于②导致异常&#xff1a; 原因&#xff1a; 解决办法&#xff1a;自己抛出一个非检查异常&#xff08;具体原因看“抛出检查异常”&#xff09;。 抛出检查异常 由于①出错&#xff0c;导致抛出了检查异常 原因&…

[通俗易懂:Linux标准输入/输出和重定向]Shell脚本之 > /dev/null 2>1命令详解

目录标题 一、> /dev/null 2>&1 命令解析二、/dev/null 文件浅显理解三、标准输入、标准输出、标准错误输出四、输入重定向、输出重定向五、命令作用与应用场景 如果想看命令意义&#xff0c;可以直接跳到第五部分 一、> /dev/null 2>&1 命令解析 我们在别…

计算机服务器中了360后缀勒索病毒怎么办?360后缀勒索病毒解密步骤

网络技术的不断应用与发展&#xff0c;为企业的生产运营提供了极大便利&#xff0c;利用网络可以开展各项工作业务&#xff0c;可以大大提高企业的生产效率&#xff0c;然而&#xff0c;网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业的数据安全带来…

常见的Linux命令

linux操作系统 ctrl鼠标滚动 放大缩小字体 cd /目录进入目录下 ls查看当前目录下的所有内容 tar -zxvf 压缩包名字 对压缩包进行解压 sync将数据由内存同步到硬盘上 shutdown关机指令 shutdown -h 10 /10 表示十分钟后关机 shutdown -h now 表示现在关机 shutdown -h…

英语新概念2-回译法-lesson6

我刚刚搬家去柏林大街的房子里。昨天一个流浪汉敲我的门,他想我寻求一顿饭和一杯啤酒。未拒绝了这个请求之后,这个流浪汉倒立着唱歌,我给他了一顿饭,他吃了食物并且喝了啤酒,然后他把一片奶酪放到他的口袋里然后走开了。过了一会儿,一个领居告诉我关于这个流浪汉的事情。…

Centos7 K8S 集群 - kubeadm搭建方式

机器准备 搭建环境是centos7, 四核心4G内存四台机器 一个master节点&#xff0c;一个etcd&#xff0c;两台node 机器名称IP 地址master192.168.1.127node1192.168.1.129node2192.168.1.130node3192.168.1.131 机器时间同步 各节点时间要求精确同步&#xff0c;可以直接联网…