视频压缩技术及安卓中用法

视频编码分类

现在视频编码主要是MPEG系列和H.26X系列,其中H.264是现在主流的视频编码方式,与H.263+和MPEG4 SP相比,减小50%比特率,实现高压缩

H.264基本概念
H.264压缩标准中I帧、P帧、B帧用于表示传输的视频画面。

I帧:关键帧。属于帧内压缩技术,视频的第一帧肯定是关键帧。
P帧:向前压缩帧。压缩时只依赖于前一帧,属于帧间压缩技术。如果P帧丢失会造成花屏
B帧:双向压缩帧。压缩时既参考前一帧也参考后一帧,属于帧间压缩技术。好处是可以实现更高的压缩率,因为比如P帧下一帧信息已经存储了,所以只需要存储差异。缺点是对网络要求更高,因为需要等待下一帧到来。

GOF 一组帧

SPS:序列参数集,存放帧数、参考帧数目、解码图像尺寸、帧场编码模式选择标识等
PPS:图像参数集,存放熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等
SPS和PPS是解码的基础,属于I帧。

H.264编码原理
H.264压缩技术

帧内预测压缩:解决空域数据冗余问题。比如图里人眼不明感颜色等可以删除的
帧间预测压缩:解决时域数据冗余问题。比如帧间重复数据
整数离散余弦变换(DCT):将空间上相关性变为频域上无关的数据后进行量化
CABAC:上下文适应的无损压缩

H.264宏块划分与分组

可以参考这个blog
https://www.cnblogs.com/oldmanlv/p/5897546.html
对比MPEG2 和H.264字块划分结果:
这里写图片描述
帧分组:图像变化较小可以进行分组,通过算法得到每一帧位置,比如球的滚动

运动矢量与补偿压缩

通过算法进行连续的运动估算,得到运动矢量和残差数据,实现帧间压缩
这里写图片描述

通过不同帧内预测模式(9种)计算残差值(下图2),实现帧内压缩。预测的图和残差值进行累加可以得到原图
这里写图片描述
这里写图片描述

H.264切片与宏块

片:一帧视频图像可编码成一个或者多个片,每片包含切片头和切片数据,每个数据包涵整数个宏块,即每片至少一个宏块,最多时包含整个图像的宏块,宏块包涵宏块类型、宏块预测和编码残差数据
以下为关系图:
这里写图片描述

安卓视频用法

VideoView 是Android实现视频播放主要控件,通过MediaPlayer来对视频文件进行控制的,支持mp4、avi、3gp格式。
这里写图片描述

MediaController是一个多媒体的类,支持快进、快退、上一个、下一个等多媒体操作。
这里写图片描述

有复杂的业务要求需重写VideoView

public class MovieView extends VideoView implements View.OnTouchListener, View.OnKeyListener{}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值