视频相关概念
流媒体协议
流媒体协议是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送,实现在网络上实时传输影音以供观赏的一种技术。例如HTTP, RTMP, HLS
等。
容器
一般吧MP4, flv, mov
等称之为容器,也就是在这些常用格式中,可以存放多路音视频文件。例如在MP4中,就可以存放一路视频流,多路音频流和多路字幕流。
// 使用ffmpeg查看其支持的容器格式
ffmpeg -formats
// 使用ffmpeg查看是否支持某个格式(例如FLV)
ffmpeg -codecs | grep FLV
编码格式
音视频文件需要经过编码压缩,才能保存为文件。不同的编码格式有不同的压缩率,导致不同的清晰度和文件大小。常见的视频编码格式
有h264, h265, MPEG-4
等。常见的音频编码格式
有mp3, aac
等。
// 查看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
(存在音频格式头,基本也是原始数据)
采样大小
: 一个采样用多少bit存放,通常是16bit采样率
: 每秒采样的频率, 一般有8k, 16k, 32, 44.1k, 48k(接近原声)声道数
: 单声道,双声道,立体声(多声道)
原始音频数据的大小 = 采样大小
* 采样率
* 声道数
* 时间
原始音频数据非常大,需要进行压缩
音频压缩
- 有损压缩(去除冗余信息,例如人听不到的频率或者被遮蔽的声音)
- 无损压缩(无损加解码,例如哈夫曼编码)
ffmpeg录制音频
// 查找设备麦克风名字
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
原文链接:https://juejin.cn/post/7334623638116401163 作者:用户名未被占用