音视频小白系统入门笔记-0

news2025/4/16 15:25:15

本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅

音视频小白系统入门课 音视频基础+ffmpeg原理

绪论

ffmpeg推流 ffplay/vlc拉流 使用rtmp协议

ffmpeg -i <source_path> -f flv rtmp://<rtmp_server_path>

为什么会推流失败?

默认命令行方式可能导致音频和视频不同步

原始是最快的播放速率,修改为

`ffmpeg -re -i <source_path> -f flv rtmp://<rtmp_server_path>`  以原始播放速率播放

为什么清晰度不高?

`-f flv` 会按照默认方式对视频重新进行编码,导致视频质量下降

`ffmpeg -re -i <source_path> -c:v copy -f flv rtmp://<rtmp_server_path>`

环境变量

`PATH` :命令行程序如果不是通过地址指定,将通过`PATH`进行搜索
`PKG_CONFIG_PATH` :`pkg-config`参数在这个环境变量的目录下找库的执行文件和头文件,实际上是找到对应库的`.pc`文件,而`.pc`文件中包含有库和头文件的信息
在`~/.bashrc | ~/.bash_profile`文件中设置Linux | Mac 的环境变量,然后通过`source`命令生效

PKG_CONFIG_PATHLD_LIBRARY_PATH有什么区别?

https://www.cnblogs.com/doubleconquer/p/17862780.html

`pkg-config` 输出的参数最终会被 `gcc/clang` 和 `ld` 使用,但 **它本身不参与链接或运行**。

安装ffmpeg

Mac系统可以直接使用brew安装,类Unix系统可以使用源码安装,源码安装好处是更加灵活。Windows系统安装稍微复杂

可执行工具:

`ffmpeg`:推流,音视频处理

`ffplay`:拉流,播放流媒体文件

`ffprobe`:侦测多媒体文件格式、基本信息

库:

`libavcodec`:编解码

`libavdevice`:管理设备

`libavfilter`:过滤,特效

`libavformat`:多媒体格式处理

`libavutil`:基本工具

`libpostproc`:没什么用

`libswresmaple`:音频重采样

`libswscale`:视频缩放

默认生成动态库(`.dylib/.so`),也可以生成静态库(`.a`)

为什么有时候ffmpeg编译出来没有ffplay工具?

https://blog.csdn.net/chendongpu/article/details/123688442

应该是旧版本需要手动enable

音频基础

处理流程

共享端:音视频采集(调用API) → 音视频编码

传输

观看端:音视频解码 → 音视频渲染 (调用驱动API)

音频数据流

采集后得到数字信号PCM数据 → 编码器aac/mp3编码 → 压缩后的数据aac/mp3 → 套马甲形成多媒体文件mp4/flv

多媒体文件mp4/flv → 脱马甲(解封装) → 解码 → PCM

为什么要套马甲(封装)?

1. 便于传输和存储:多媒体文件格式(如mp4/flv)提供了标准化的容器,可以同时存储音频、视频、字幕等多种数据

2. 包含元数据:多媒体容器可以存储诸如时长、创建时间、编码格式等重要信息

3. 支持流媒体:特定的容器格式支持流式传输,允许在下载完整文件前就开始播放

4. 同步音视频:容器格式包含时间戳等信息,确保音视频在播放时能够正确同步

音频基础知识

声音:物体振动 → 通过介质传输能量 → 介质刺激耳膜 → 被人脑识别

人类的听觉频率范围(介质振动频率):次声波 20Hz 可听声波 20kHz 超声波

说话:85 — 1100 Hz

声音的三要素 → 波的三要素

音调 → 波的频率 频率较高悦耳

音量 → 波的振幅

音色 → 谐波

什么是谐波?

谐波是在基频(基本频率)上叠加的整数倍频率的波。当一个物体振动时,除了产生基本频率的声波外,还会同时产生2倍、3倍等整数倍频率的波。这些波的叠加形成了独特的音色。

例如:当一根琴弦振动时,除了产生基频(最低频率的声波),还会产生2倍频率(第二谐波)、3倍频率(第三谐波)等。不同乐器发出相同音调的声音听起来不一样,就是因为它们产生的谐波组成不同。

谐波有什么用?

1. 音质优化:在音频处理中,了解谐波可以帮助进行更好的音质调节和优化

2. 音频压缩:某些音频压缩算法会考虑谐波特性来实现更有效的压缩

3. 音色合成:在音乐制作中,通过调整谐波可以创造不同的音色效果

模拟信号经过采样得到数字信号(根据奈奎斯特定理,采样率超过最高频率的2倍不会失真),普遍采样率在48kHz

为什么采样率需要是最高频率的2倍?

1. 重建原始信号:根据奈奎斯特定理,要完整重建一个连续的模拟信号,采样率必须至少是信号最高频率的2倍。这是因为每个周期至少需要两个采样点才能确定一个正弦波的频率和相位。

2. 避免混叠效应:如果采样率低于信号最高频率的2倍,高频信号会被错误地解释为低频信号,这种现象称为"混叠"。这会导致重建的信号失真。

3. 数学证明:假设采样率低于2倍频率,那么在信号重建时,由于采样点不足,同一组采样点可能对应多个不同频率的正弦波,系统无法确定原始信号的真实频率。

4. 实际应用:在实践中,为了保证更好的信号质量,通常会采用更高的采样率,比如音频常用的44.1kHz或48kHz。

位深/采样大小:一个采样用多少bit存放。常用16bit

采样率:采样频率 8k(打电话) 16k 32k 44.1k 48k

声道数:单声道、双声道(人耳)、多声道

码率:采样率 x 声道数 x 位深

PCM格式:裸数据,记录采样信息

WAV格式:封装数据,一般用于封装PCM数据,加上元信息,最主要就是位深、采样率和声道数(以及其他一些大小等)

RIFF 是 WAV 的容器格式,通过分块(Chunk)组织数据,使用小端序存储数字。

大端序(Big-Endian)和 小端序(Little-Endian)是两种不同的字节存储顺序,用于定义多字节数据(如整数、浮点数)在内存或文件中的排列方式。它们的区别主要体现在字节的排列顺序上,直接影响数据的解析和跨平台兼容性。
  • 关键块"RIFF"(顶层)、"fmt "(参数)、"data"(音频数据)。
  • 应用场景:WAV、AVI、WebP 等均基于 RIFF 结构。

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

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

相关文章

Zabbix 简介+部署+对接Grafana(详细部署!!)

目录 一.Zabbix简介 1.Zabbix是什么 2.Zabbix工作原理&#xff08;重点&#xff09;​ 3.Zabbix 的架构&#xff08;重点&#xff09;​ 1.服务端 2.客户端&#xff1a; 4.Zabbix和Prometheus区别 二.Zabbix 部署 1.前期准备 2.安装zabbix软件源和组件 3.安装数据库…

Ubuntu2404装机指南

因为原来的2204升级到2404后直接嘎了&#xff0c;于是要重新装一下Ubuntu2404 Ubuntu系统下载 | Ubuntuhttps://cn.ubuntu.com/download我使用的是balenaEtcher将iso文件烧录进U盘后&#xff0c;使用u盘安装&#xff0c;默认选的英文版本&#xff0c; 安装后&#xff0c;安装…

Spring Cloud初探之使用load balance包做负载均衡(三)

一、背景说明 基于前一篇文章《Spring Cloud初探之nacos服务注册管理(二)》&#xff0c;我们已经将服务注册到nacos。接下来继续分析如何用Spring cloud的load balance做负载均衡。 load balance是客户端负载均衡组件。本质是调用方拿到所有注册的服务实例列表&#xff0c;然…

vector常用的接口和底层

一.vector的构造函数 我们都是只讲常用的。 这四个都是比较常用的。 第一个简单来看就是无参构造&#xff0c;是通过一个无参的对象来对我们的对象进行初始化的&#xff0c;第一个我们常用来当无参构造来使用。 第二个我们常用的就是通过多个相同的数字来初始化一个vector。 像…

【2025年3月中科院1区SCI】Rating entropy等级熵及5种多尺度,特征提取、故障诊断新方法!

引言 2025年3月&#xff0c;研究者在国际机械领域顶级期刊《Mechanical Systems and Signal Processing》&#xff08;JCR 1区&#xff0c;中科院1区 Top&#xff0c;IF&#xff1a;7.9&#xff09;上以“Rating entropy and its multivariate version”为题发表科学研究成果。…

【AI学习】李宏毅老师讲AI Agent摘要

在b站听了李宏毅2025最新的AI Agent教程&#xff0c;简单易懂&#xff0c;而且紧跟发展&#xff0c;有大量最新的研究进展。 教程中引用了大量论文&#xff0c;为了方便将来阅读相关论文&#xff0c;进一步深入理解&#xff0c;做了截屏纪录。 同时也做一下分享。 根据经验调整…

Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置

作者&#xff1a;濯光、翼严 Kubernetes 配置管理的局限 目前&#xff0c;在 Kubernetes 集群中&#xff0c;配置管理主要通过 ConfigMap 和 Secret 来实现。这两种资源允许用户将配置信息通过环境变量或者文件等方式&#xff0c;注入到 Pod 中。尽管 Kubernetes 提供了这些强…

【BUG】Redis RDB快照持久化及写操作禁止问题排查与解决

1 问题描述 在使用Redis 的过程中&#xff0c;遇到如下报错&#xff0c;错误信息是 “MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk...”&#xff0c;记录下问题排查过程。 2 问题排查与解决 该错误提示表明&#…

java分页实例

引言 在现代Web应用和移动应用中&#xff0c;面对大量数据的展示&#xff0c;分页技术成为了提升用户体验和优化数据加载效率的关键手段。尤其是在MySQL数据库环境中&#xff0c;合理运用分页查询不仅能显著减少服务器负载&#xff0c;还能提升数据访问速度&#xff0c;为用户提…

【Linux篇】ELF文件及其加载与动态链接机制

ELF文件及其加载与动态链接机制 一. EFL文件1.1 ELF文件结构二. ELF文件形成与加载2.1 ELF形成可执行2.2 ELF控制性文件的加载2.2.1总结 三. ELF加载与进程地址空间3.1 动态链接与动态库加载3.1.1 进程如何看到动态库 3.2 全局偏移量表GOT(global offset table&#xff09;3.2.…

经典算法 判断一个图中是否有环

判断一个图中是否有环 问题描述 给一个以0 0结尾的整数对列表&#xff0c;除0 0外的每两个整数表示一条连接了这两个节点的边。假设节点编号不超过100000大于0。你只要判断由这些节点和边构成的图中是否存在环。存在输出YES&#xff0c;不存在输出NO。 输入样例1 6 8 5 3 …

AI与深度伪造技术:如何识别和防范AI生成的假视频和假音频?

引言&#xff1a;深度伪造的崛起 近年来&#xff0c;人工智能技术迅猛发展&#xff0c;其中深度伪造&#xff08;Deepfake&#xff09; 技术尤为引人注目。这项技术利用深度学习和神经网络&#xff0c;可以轻松生成高度逼真的假视频和假音频&#xff0c;使人物的面部表情、语音…

ESP32驱动读取ADXL345三轴加速度传感器实时数据

ESP32读取ADXL345三轴加速度传感器实时数据 ADXL345三轴加速度传感器简介ADXL345模块原理图与引脚说明ESP32读取ADXL345程序实验结果 ADXL345三轴加速度传感器简介 ADXL345是一款由Analog Devices公司推出的三轴数字加速度计&#xff0c;分辨率高(13位)&#xff0c;测量范围达…

【Linux】系统入门

【Linux】系统初识 起源开源 闭源版本内核内核编号 Linux的安装双系统(不推荐)WindowsLinuxvmware虚拟机vitualbox操作系统的镜像centos 7/ubuntu云服务器租用 Linux的操作lsmkdir 文件名pwdadduser userdel -rrm文件名cat /proc/cpuinfolinux支持编程vim code.c./a.out 运行程…

github配置ssh,全程CV

1)随便找一个文件夹右键进入git bash 2)验证是否已有公私钥文件 cd ~/.ssh ls如果不存在则生成然后获取 生成时一直回车 ssh-keygen -t rsa -C "xxxxxx.com" cd ~/.ssh cat id_rsa.pub如果存在则直接获取 cd ~/.ssh cat id_rsa.pub3&#xff09;复制 4&#xf…

Dify简介:从架构到部署与应用解析

Dify 是一个开源的生成式 AI 应用开发平台&#xff0c;融合了后端即服务&#xff08;Backend as a Service, BaaS&#xff09;和 LLMOps 的理念&#xff0c;旨在帮助开发者快速搭建生产级的生成式 AI 应用。本文将详细解析 Dify 的技术架构、部署流程以及实际应用场景&#xff…

碳化硅(SiC)功率模块方案对工商业储能变流器PCS市场格局的重构

碳化硅&#xff08;SiC&#xff09;模块方案&#xff08;如BMF240R12E2G3&#xff09;对工商业储能变流器PCS市场格局产生颠覆性的重构&#xff1a; 2025年&#xff0c;SiC模块方案&#xff08;如BMF240R12E2G3&#xff09;凭借效率、成本和政策支持的三重优势&#xff0c;将重…

Redis入门(Java中操作Redis)

目录 一 基础概念 1. Redis 核心特点 2. Redis 与 MySQL 的对比 3. Redis的开启与使用 二 Redis的常用数据类型 1 基础概念 2 数据结构的特点 三 Redis基础操作命令 1 字符串操作命令 2 哈希操作命令 3 列表操作命令 4 集合操作命令 5 有序集合操作命令 6 通用命令…

算法思想之位运算(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之位运算(一) 发布时间&#xff1a;2025.4.12 隶属专栏&#xff1a;算法 目录 算法介绍六大基础位运算符常用模板总结 例题位1的个数题目链接题目描述算法思路代码实现 比特位计数题目链接题目描述算法思路…

【基于Servlet技术处理表单】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 功能架构2. 核心代码实现3. 测试用例 总结 一、实验背景与目的 本次实验旨在深入理解Servlet工作原理&#xff0c;掌握JSP与Servlet的协同开发&#xff0c;实现前端表单与后端数据处理的交互。具体目标包括&#xff1a;设…