美文网首页
【白水日记】关于视频

【白水日记】关于视频

作者: d2665f7588cb | 来源:发表于2021-03-02 18:54 被阅读0次

视频就是一组图像组成,图像由像素组成,像素由rgb组成,图像就是一组数据 

    分辨率:横向乘以纵向有多少个像素组成

    像素的位深:多少个位表示一个像素

    rgb888 24位

RGBA 32位    

    PPI pixels per inch 像素密度

    DPI dots pen inch  每英寸的点数

ppi>300就属于视网膜级别,人眼区分不出    

帧率:每秒钟采集多少/播放图像的个数,动画:25帧/s,实时通信:15/s,录视频:30/s,电影拍摄:60/s

    视频在原始数据占空间很大,传输中一般会进行压缩,这就涉及到编解码

GOP:group of picture,根据视频相关性,将相似的视频帧进行分组

    编码帧:I帧 intraframe frame 关键帧,属于帧内压缩技术

                   P帧 forward Predicted frame向前参考帧,压缩时,只参考前面处理好的帧,帧间压缩,只占I帧的一半大小 

                  B帧 bidirectioinally predicted frame 双向参考帧,压缩时候只占四分之一,参考前面也参考后面,最后进行压缩

播放顺序:先播放I帧,后B帧,最后P帧

B帧压缩效率高,但是占用大量cpu,因此实时通讯中,不使用B帧技术,视频播放中,大量使用B帧技术

B帧之间不进行参考

    IDR帧:是一种特殊的I帧,遇到IDR帧后,解码器立即刷新,清除之前所有的缓存,一般一个GOP的第一帧就是IDR帧

   视频花屏的原因:同一个GOP分组中,有一个帧丢了,解码端的图像发生错误,主要指B帧和P帧

    视频卡顿的原因:为了解决花屏发生, 有丢帧就丢弃当前GOP所有帧,直到下一个IDR帧重新刷新,I帧是按照周期来的,需要一个长的时间周期,如果下一帧来之前不显示后面的图像,视频静止的现象就是卡顿

视频帧压缩技术分为帧内压缩和帧间压缩,帧内压缩解决空间冗余问题,帧间压缩解决时间冗余问题

    帧内压缩:

宏块:一张图片,放大到像素级别,相邻的两个像素差别不大,可以将一块区域的像素点视为一个基本单元,是视频压缩操作的基本单元

由于人眼对亮度的敏感度远超过色度,因此色度的细微差别不会影响太影响主体观感,为了压缩图像大小,会使用帧内预测,通过一块颜色推测相邻的另一块颜色是什么

    H264中提供9种模式进行帧内预测推算,横向复制,纵向复制,斜向复制,求平均值,相邻的下一块颜色是什么颜色,使用哪种模式,有专门算法,核心思想就是最接近原色

    帧内预测残差值:预测之后的图和原图的差异由于用算法推测出的和原图还是有差异的,因此需要计算原图的差异

    只需传输:压缩预测模式信息+压缩残差值即可,接收方通过算法和残差值进行还原即可,相比传输原始图像信息,压缩率很高,但是整个过程还是有损压缩

    帧间压缩:

    使用参考帧技术:后面的帧参考前面的帧

    运动估计:宏块匹配+运动矢量,是一个过程,结果是找到运动矢量,手段是宏块匹配

    运动补偿:找到残差值,解码时进行补充信息 

宏块查找:对比两个关键帧,对比关键宏块的位置变化,并记录

传输:宏块变化残差值+运动矢量

相关文章

  • 【白水日记】关于视频

    视频就是一组图像组成,图像由像素组成,像素由rgb组成,图像就是一组数据 分辨率:横向乘以纵向有多少个像素组成 像...

  • 【白水日记】关于音频

    声音由振动产生,可以通过空气,固体,液体传递,到达耳膜 声音的三要素: 音调:音频的快慢,振动越快频率越高 音量:...

  • 【白水日记】关于音频(二)

    音频在传输和使用的过程中,需要进行压缩,压缩的方向一般是压缩的比例和压缩的速度。 常用的思路就是消除冗余信息,因为...

  • 【白水日记】Coroutines

    在kotlin中,协程是方便而优雅处理长时间运行任务的方案 kotlin协程使得原来基于回调的代码改为了顺序编写,...

  • 【白水日记】IntentService

    IntentService继承自Service,适合处理短任务,核心实现是 ServiceHandler和Loop...

  • 【白水日记】WorkManager

    WorkManager适合不实时完成任务的场景,同时满足了电量和体验的。由于内部有自己的数据库维护着任务,Wo...

  • 【白水日记】Navigtion

    Navigation是jetpack中的一个ui控件,使用该组件可方便管理fragment的导航行为,甚至可以图...

  • 【白水日记】Gradle

    关于gradle,是我们熟悉又陌生的事物,每次运行项目都在用,但是一些细节,却不太了解,不如做一次查缺补漏 gr...

  • 【白水日记】JobIntentService

    JobIntentService本质也是一个Service,一看job开头的系统组件,基本就是JobSchedul...

  • 白水日记:中国智慧之化字神功

    “白水日记”:中国智慧之化字神功 ·2018年4月6日· 化...

网友评论

      本文标题:【白水日记】关于视频

      本文链接:https://www.haomeiwen.com/subject/ycxwxltx.html