编解码:WebP协议

  • 一 简介
  • 二 协议
    • 1 WebP文件头
    • 2 数据块
    • 3 拓展数据
    • 4 动画
      • ANIM 块
      • ANMF块
    • 5 ALPHA
    • 6 颜色配置文件
    • 7 元数据
      • EXIF
      • XMP
  • 三 文件布局示例
    • 1 采用 Alpha 格式的有损编码图片可能如下所示:
    • 2 无损编码的图片可能如下所示:
    • 3 具有 ICC 配置文件和 XMP 元数据的无损图片可能如下所示:
    • 4 包含 Exif 元数据的动画图片可能如下所示:

一 简介

WebP 是一种新型的图片格式,使用 VP8 关键帧编码以有损方式压缩图片数据,或使用 WebP 无损编码,其无损图片的大小比 PNG 图片小 26% ,有损图片比采用等效 SSIM 质量索引的同类 JPEG 图片缩小 25-34%
无损 WebP 支持 Alpha 通道,带上Alpha通道后仅多 22%。在可以接受有损 RGB 压缩的情况下,有损 WebP 也支持透明度,其提供的文件大小通常比 PNG 小 3 倍。动画 WebP 图片均支持有损、无损和透明度,与 GIF 和 APNG 相比,这种格式可以减小文件大小

二 协议

1 WebP文件头

| ‘R’ | ‘I’ | ‘F’ | ‘F’ |
| File Size |
| ‘W’ | ‘E’ | ‘B’ | ‘P’ |

上述的统称为WebP文件头:WebP header,4个字节的文件FourCC(RIFF),4个字节的文件大小,4个字节的标识(WEBP),总计12个字节

2 数据块

| ‘V’ | ‘P’ | ‘8’ | ‘*’ |
| data |

上述统称chunk,若为有损压缩则编码FourCC为(”VP8 “),无损压缩则编码FourCC为(”VP8L“),L即LossLess,具体的data的编码协议则查阅相关文档 无损编码 有损编码

3 拓展数据

| ‘V’ | ‘P’ | ‘8’ | ‘X’ |
| 拓展数据 |

4个字节FounCC(”VP8X“)
拓展数据构成总计:4+3+3 = 12个字节
Rsv字段:2 位,置 0
ICC 配置文件 (I)字段:1 位,如果文件包含 ICC 配置文件,置1
Alpha (L)字段:1 位,如果图片的任何帧包含透明度信息 (“alpha”),置1
Exif 元数据 (E)字段:1 位,如果文件包含 Exif 元数据,置1
XMP 元数据 (X)字段:1 位,如果文件包含 XMP 元数据,置1
动画 (A)字段:1 位,如果这是动画图片,置1,则包含ANIM,ANMF块
保留 ®字段:1 位, 置0
预留字段:24 位,置 0
伪画布宽度:24 位, 实际的画布宽度需要此值再加1
伪画布高度:24 位, 实际画布高度需要此值再加1
画布宽度和画布高度的乘积不得超过 2^32 - 1

4 动画

ANIM 块

| ‘A’ | ‘N’ | ‘I’ | ‘M’ |
| background color |
| loop count |

4个字节FounCC(”ANIM“)
background color :4个字节,bgra背景色
loop count:2个字节,动画的循环次数,0 表示无限

ANMF块

| ‘A’ | ‘N’ | ‘M’ | ‘F’ |
| 数据 |

4个字节FounCC(”ANMF“)
FrameX:24 位 ,框架左上角的 X 坐标为 2倍该值
FrameY:24 位 ,框架左上角的 Y 坐标为 2倍该值
伪帧宽:24 位,帧宽度为此值 +1
伪帧高:24 位,帧高度为此值 +1
帧时长:24 位,显示下一帧前的等待时间,以 1 毫秒为单位
预留:6 位,置 0
混合方法 (B):1 位,指示当前帧的透明像素如何与上一画布的相应像素混合,0使用alpha混合,1不混合
处理方法 (D):1 位,指示在画布上显示当前帧之前(在渲染下一帧之前)如何处理当前帧,0不处置将画布保留原样;1处理为背景颜色,在当前帧覆盖的画布上,使用 ANIM 分块中指定的背景颜色填充矩形
帧数据:16 字节,包含帧的可选 Alpha 子区块、帧的比特流子分块(也就是上述的数据块)、可选的未知分块列表

5 ALPHA

| ‘A’ | ‘L’ | ‘P’ | ‘H’ |
| 数据 |

4个字节FounCC(”ALPH“)
Rsv:2 位,置 0
预处理 §:2 位,这些信息性位用于指示在压缩过程中执行的预处理。解码器可以使用这些信息(例如,在显示值之前抖动值或平滑渐变),0未进行预处理,1降低等级
过滤方法 (F):2 位,0无,1水平过滤器,2垂直滤镜
压缩方法 ©:2 位,0未压缩,1使用 WebP 无损格式进行压缩
Alpha 位流,数据块大小 :1 个字节

6 颜色配置文件

| ‘I’ | ‘C’ | ‘C’ | ‘P’ |
| Color Profile |

4个字节FounCC(”ICCP“)
此区块必须出现在图片数据之前。最多只能有 1 个此类分块。如果存在更多这样的区块,忽略除第一个区块之外的所有其他区块。如果此分块不存在,则应采用 sRGB

7 元数据

元数据可以存储在 EXIF’XMP 或数据块中。每种类型的数据块 (‘EXIF’ 和 'XMP ') 最多只能有一个块。如果有多个此类块,忽略除第一个块之外的全部块

EXIF

| ‘E’ | ‘X’ | ‘I’ | ‘F’ |
| Exif Metadata |

4个字节FounCC(”EXIF“)

XMP

| ‘X’ | ‘M’ | ‘P’ | ’ ’ |
| XMP Metadata |

4个字节FounCC(”XMP “)

三 文件布局示例

1 采用 Alpha 格式的有损编码图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± ALPH (alpha bitstream)
± VP8 (bitstream)

2 无损编码的图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± XYZW (unknown chunk)
± VP8L (lossless bitstream)

3 具有 ICC 配置文件和 XMP 元数据的无损图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± ICCP (color profile)
± VP8L (lossless bitstream)
± XMP (metadata)

4 包含 Exif 元数据的动画图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± ANIM (global animation parameters)
± ANMF (frame1 parameters + data)
± ANMF (frame2 parameters + data)
± ANMF (frame3 parameters + data)
± ANMF (frame4 parameters + data)
± EXIF (metadata)

参考官方说明

【编解码:WebP协议】相关推荐

  1. 音视频编解码 文件格式 协议内容详解

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  2. H264视频传输、编解码----RTP协议对H264数据帧拆包、打包、解包过程

    H264帧需要通过RTP协议进行传输,这其中就涉及到H264数据帧的封包.拆包和解包等过程. RTP协议格式 下面是 RFC 3550 中规定的 RTP 头的结构: 0 1 2 3 40 1 2 3 ...

  3. Wangle源码分析:编解码Handler

    2019独角兽企业重金招聘Python工程师标准>>> 前言 编解码是协议相关的,如果没有编解码Handler,那么在处理网络的粘包.拆包时会变得很复杂.除了http之类的公有协议之 ...

  4. Netty使用篇:Http协议编解码

    第一章:概述 Http协议是一个应用层协议.在Http协议之上又构建出来了WebSocket这种双向通信的协议.可以主动在服务端帮我们去推数据,实际上我们现在做一些双向通信的比较很重要的东西,比如:推 ...

  5. aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读

    家有影院致力于帮助渴望学习.热爱电影.希望通过自己双手搭建出适合自己的家庭影院的朋友.如果你是这样的人,我们和500位同样热爱家庭影院的伙伴愿意一起帮助你实现梦想.同时,我们还能帮助你找到价格优惠的靠 ...

  6. aac蓝牙编解码协议_最新的真无线蓝牙耳机选购指南

    点击蓝字 关注我们 真无线蓝牙耳机选购指南 蓝牙耳机真无线的一些科普内容 解码方案: 目前流行的解码方案包括SBC.apt-X.AAC.LDAC和三星的Scalable与华为HWA独家技术.使用SBC ...

  7. android 解码webp动画,android webp编解码详解

    key words:android decode webp sample 当我敲下键盘的时候有种深深的耻辱感,看到android 4.0支持webp格式的图像,于是我狠命的找提供了什么样的api,nn ...

  8. SBUS协议及编解码

    1.简介 SBUS本质是一种串口通信协议,采用100K的波特率,8位数据位,两位停止位,偶效验,即8E2的串口通信. 值得注意的有三点: 1.SBUS采用负逻辑,所以无论接收还是发送都要进行硬件取反( ...

  9. Dubbo篇:基于Netty实现Dubbo协议编解码源码分析

    Dubbo协议解析 Dubbo协议设计参考了TCP/IP协议,包括协议头和协议体两部分.16字节报文头主要携带了魔法数(0xdabb,用于分割两个不同请求),以及当前请求报文是否是Request.Re ...

最新文章

  1. python dos攻击_利用SMB漏洞DoS攻击任何Windows系统
  2. Android 中一些常用类的常用方法(Math、Random、Color、Paint、Canvas、Bitmap、BitmapFactory)...
  3. 技术图文:位运算技术在求解算法题中的应用
  4. 图书大甩卖(操作系统、C语言、Linux) 已成交
  5. redis使用sysc超时_基于redis的分布式锁实现
  6. VMwareWorkstation设置U盘启动(或U盘使用)
  7. 如何单元测试Java的private方法
  8. Java-什么是面向对象
  9. spark基础之spark sql运行原理和架构
  10. 乐迪智能陪伴机器人_会做饭能搬运还可陪伴 越来越智能的机器人让幸福感加倍...
  11. jmeter 非GUI模式下测试报错An error occurred: Unknown arg:
  12. 编写一个Linux 64位应用的注册机
  13. Ubuntu PDF viewer
  14. html导航栏所有页面通用,在所有页面中包含HTML导航栏
  15. 联通路由器设置FTP服务器,做家庭储存云盘
  16. 【mysql】查询本月和去年同期数据SQL
  17. word文档正文页码从1开始
  18. aspCms 标签大全
  19. 地球围绕着太阳的概念和计算
  20. 形容词记忆(二):ful,ous,ant后缀常用词

热门文章

  1. matlab播放 视频帧,MATLAB读取视频并按帧保存
  2. python成绩统计_Python编程语言:程序代码统计成绩
  3. leetcode day 2 【1905. 统计子岛屿】 BFS/DFS
  4. php会员分级,php如何查找会员无限分类的所有上级和所有下级
  5. 在网站中添加微博“一键关注”代码
  6. 基于android 10的国产手机,魅友有福了,基于Android 10的Flyme来了,10款旧机型可申请...
  7. AI赐子?!学习数百万个胚胎发育过程,算法可将试管婴儿成功率提高3倍
  8. 基于无线lora通信实现远程采集输出0~10v,0~20ma模拟量信号以及开关量信号
  9. 开源生态|打造活力开源社区,共建开源新生态!
  10. html5文档样式,jQuery HTML5文件上传美化插件jQuery.filer