视频编码方式
来源:互联网 发布:淘宝商家花呗怎么开通 编辑:程序博客网 时间:2024/06/11 17:25
我们通常所说的 .mp4,.flv,.ogv,.webm 等。简单来说,它其实就是一个盒子,用来将实际的视频流以一定的顺序放入,确保播放的有序和完整性。因为,原始的视频流非常大,打个比方就是,你直接使用手机录音,你会发现你几分钟的音频会比市面上出现的 MP3 音频大小大很多,所以视频必须要经过压缩算法封装起来。
首先,由原始数码设备提供相关的数字信号流,然后经由视频压缩算法,大幅度的减少流的大小,然后交给视频盒子,打上相应的 dts,pts 字段,最终生成可用的视频文件。
下面会介绍主要的视频压缩方式即视频编码方式:
视频实际上就是一帧一帧的图片,拼接起来进行播放而已。而图片本身也可以进行相关的压缩,比如去除重复像素,合并像素块等等。不过,还有另外一种压缩方法就是,运动估计和运动补偿压缩,因为相邻图片一定会有一大块是相似的,所以,为了解决这个问题,可以在不同图片之间进行去重。
所以,总的来说,常用的编码方式分为三种:
变换编码:消除图像的帧内冗余
运动估计和运动补偿:消除帧间冗余
熵编码:提高压缩效率
变换编码
这里就涉及到图像学里面的两个概念:空域和频域。空域就是我们物理的图片,频域就是将物理图片根据其颜色值等映射为数字大小。而变换编码的目的是利用频域实现去相关和能量集中。常用的正交变换有离散傅里叶变换,离散余弦变换等等。
熵编码
熵编码主要是针对码节长度优化实现的。原理是针对信源中出现概率大的符号赋予短码,对于概率小的符号赋予长码,然后总的来说实现平均码长的最小值。编码方式(可变字长编码)有:霍夫曼编码、算术编码、游程编码等。
运动估计和运动补偿
上面那两种办法主要是为了解决图像内的关联性。另外,视频压缩还存在时间上的关联性。例如,针对一些视频变化,背景图不变而只是图片中部分物体的移动,针对这种方式,可以只对相邻视频帧中变化的部分进行编码。
参考: https://www.villainhr.com/page/2017/08/05/%E4%B8%8D%E5%86%8D%E7%A2%8E%E7%89%87%E5%8C%96%E5%AD%A6%E4%B9%A0%EF%BC%8C%E5%BF%AB%E9%80%9F%E6%8E%8C%E6%8F%A1%20H5%20%E7%9B%B4%E6%92%AD%E6%8A%80%E6%9C%AF
- 视频编码方式
- 什么是多媒体视频编码方式
- MPEG-2视频编码方式
- 视频编码方式与视频格式
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 视频编码与封装方式详解
- 三种视频编码的方式
- 视频编码与封装方式详解
- 视频文件格式、视频封装格式、视频编码方式
- 视频文件格式和视频编码方式的区别
- [RK3288][Android6.0] 视频编码方式MediaRecorder和MediaCodec
- 视频编码
- 自定义view--轮盘(带触摸旋转事件)--kotlin代码-1
- Java面向对象-Object类
- 修改IAR for msp430工程名方法
- xkplayer播放器
- Spring Boot 启动加载数据 CommandLineRunner
- 视频编码方式
- @Repository、@Service、@Controller、@Component
- 一些简单校验
- chrome浏览器扩展postman安装使用
- 自学成才的黑客(安全研究员)是从哪学到那些知识的?(跳转知乎)
- Androidbby
- 多线程处理读写数据库,脏数据梳理
- GKRandomSource
- es6入门(六):Generator