音视频基础知识点

视频相关概念

流媒体协议

流媒体协议是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送,实现在网络上实时传输影音以供观赏的一种技术。例如HTTP, RTMP, HLS等。

容器

一般吧MP4, flv, mov等称之为容器,也就是在这些常用格式中,可以存放多路音视频文件。例如在MP4中,就可以存放一路视频流,多路音频流和多路字幕流。

js 复制代码
// 使用ffmpeg查看其支持的容器格式
ffmpeg -formats
// 使用ffmpeg查看是否支持某个格式(例如FLV)
ffmpeg -codecs | grep FLV

编码格式

音视频文件需要经过编码压缩,才能保存为文件。不同的编码格式有不同的压缩率,导致不同的清晰度和文件大小。常见的视频编码格式h264, h265, MPEG-4等。常见的音频编码格式mp3, aac等。

js 复制代码
// 查看ffmpeg支持的音视频编码格式
ffmpeg -codecs

视频解码流程

解协议 的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。流媒体协议主要包括RTMP,HLS以及HTTP等。比如一个HTTP的视频链接,http://111.229.14.189/file/1.mp4, 经过解协议之后,会得到1.mp4封装格式的视频

解封装:解封装就是将音频码流和视频码流从1.mp4文件中分离出来。1.MP4文件经过解封装后,会得到编码格式为h264的视频压缩数据和编码格式为aac的音频压缩数据。

音视频解码 :将压缩的音视频数据转化原始的数据,视频的原始数据就是一帧帧的图像,音频的原始数据就是YUM数据

视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

音频相关

音频数据量化指标

音频原始数据格式PCM(纯音频数据),WAV(存在音频格式头,基本也是原始数据)

  1. 采样大小: 一个采样用多少bit存放,通常是16bit
  2. 采样率: 每秒采样的频率, 一般有8k, 16k, 32, 44.1k, 48k(接近原声)
  3. 声道数: 单声道,双声道,立体声(多声道)

原始音频数据的大小 = 采样大小 * 采样率 * 声道数 * 时间

原始音频数据非常大,需要进行压缩

音频压缩

  1. 有损压缩(去除冗余信息,例如人听不到的频率或者被遮蔽的声音)
  2. 无损压缩(无损加解码,例如哈夫曼编码)

ffmpeg录制音频

js 复制代码
// 查找设备麦克风名字
ffmpeg -list_devices true -f dshow -i dummy
// 录制音频 ctrlc结束
ffmpeg -f dshow -i audio="audio_name" -acodec aac desktop.aac
  • -f: 使用的插件库,windows下使用dshow
  • -i: 表示输入设备,"audio_name"使用本机的麦克风名称
  • -acodec: 音频格式

视频相关

像素

每个像素是包括三个发光二极管,由三个二极管不同的亮度展示各种颜色

常用像素的色值有rgb(24位),rgba(32位)

PPI: 屏幕每英寸(等于2.54厘米)的像素点数,PPI > 300时达到视网膜级别

视频数据量化指标

帧率(fps): 每秒采集或播放图像的个数 (浏览器fps正常为60)

屏幕分辨率: 屏幕分辨率表示显示器或整个屏幕中有多少像素(例如1920 * 1080标识横向1920个像素点,纵向1080个像素点。常见的横纵像素比例是16 / 9 或者4 / 3)

未编码的视频数据(码流) = fps * 色值位长(rgb为3B, rgba为4B) * 屏幕分辨率

原始音频数据非常大,例如正常屏幕和帧率的rgb码流: 1920 * 1080 * 3 * 30 = 186624000B = 186.6M

相关推荐
miss1 分钟前
海康威视 IoT 平台前端实战:视频流、海量设备与实时数据可视化
前端·javascript·物联网
用户2849709525574 分钟前
基于MQTT+SpringBoot的实验室设备数据采集与实时监控系统实战
前端
前端肥猿4 分钟前
控制台中添加插件面板
前端
IT_陈寒26 分钟前
SpringBoot自动配置的坑,我的Bean怎么不生效?
前端·人工智能·后端
迷途呀39 分钟前
新闻头条后端:新闻缓存模块
前端·redis·python·缓存·fastapi
糖墨夕1 小时前
第一章:为什么你要学 AI Agent?—— 从"切图仔"到全栈的进化之路
前端·javascript·vue.js
随风一样自由1 小时前
【前端+Canvas+航天】长征十号乙火箭回收全流程动画
前端·canvas·长征十号乙
CappuccinoRose1 小时前
CSS、Less、Sass(含 SCSS)、Stylus
前端·css·less·sass·stylus
不听话坏10 小时前
Ignition篇(下 一) 动态执行前的事情
开发语言·前端·javascript
likeyi0710 小时前
require 和 import的区别
开发语言·前端