关于vp8,vp8与264比较总结

article/2025/9/7 16:47:03

1 Other Codecs

l MSN 使用的video codec “x-rtvc1”,09之前的版本使用的ML20.参考网址:

http://www.amsn-project.net/forums/index.php?topic=6612.0

l Yahoo messenger 使用GIPS的LSVX codec.

l 这两个codecs技术保密性强,找不到有用的信息,自己开发的codec使用码流分析工具肯定也分析不出来。

l QQ的传输协议在应用层加密了,分析不出来用的什么codec.

2 Skype’s codec:VP8

Skype视频通信的分辨率随着带宽的变化而调整的。Skype Video adapts its sending rate by varying framerate, frame quality and video resolution。

今年2月,Google 收购了On2 Technologies。之后Google开放了其拥有的VP8视频编码技术源代码并免费提供给所有开发者使用,发布 WebM 开放网络媒体项目。

Opinions on VP8:

总得来看,VP8并没有声称的比H.264好多少,其标准的文档就相当糟糕,大段大段的复制C代码作为说明,Google’s VP8 specs 只描述了 baseline profile,很多地方不完整而且解释不清。

VP8,作为encoder,视觉质量在Xvid 和Microsoft’s VC-1之间,作为decoder,比ffmpeg 的H.264还要慢。

VP8发布后的3天,x.264社区的工程师,就对VP8的核心算法进行了剖析,随之网上广为流传。 这是汇总了的一些观点(如下表)。[1]

clip_image002

VP8的战略目标并不在高清离线视频领域。从这张表里,你可以很清晰地发现,VP8所删除的特性大多数都是涉及到高清/离线视频。这些特性对于PC上观看高清视频是特别有用的,但是对于低带宽视频却没有太大用处。

一个 H264 开发者对 VP8 的深入分析[3]:

帧内预测: VP8的帧内预测基本上跟H.264是一样的:“子区块”预测模式几乎跟H.264的为I4 × 4模式一模一样,(他们甚至有相同的名字!)完整块预测模式跟i16 × 16基本一致。色度预测模式也几乎没有区别,所以不可能拥有比h264更出色的效果了。但是值得一提的是,他们用 TM_PRED替代了planar预测模式。在预测方式上看起来有些不同,但是实际上h264都提供了相似的实现方法。

帧间预测:vp8支持3中参考帧:p帧,g帧(golden fream)和alt ref帧。运动矢量上,vp8支持比h264更多的可变大小区块,次像素精度上,他支持四分之一像素和6-tap插值过滤。简而言之就是:

· vp8参考帧:3

· h264:16

· vp8支持区块类型:6×16, 16×8, 8×16, 8×8, 4×4

· h264:16×16, 16×8, 8×16, 但是还有更灵活的子区块:例如 8×8 可以被分为 8×8, 8×4, 4×8, 或者 4×4

· VP8 chroma MV derivation:4×4 色度均值处理 (有点类似于 MPEG-4 ASP)

· h264:直接使用,没有什么处理(没有均值处理,所以视觉效果比较好)

· H.264 拥有b帧和加权预测,但是vp8却没有

VP8的插值过滤器可能稍好,但实现起来肯定会慢,包括编码器端和解码器端。

变换与量化编码及环路滤波器: 未关注,参看[3]

3 VP8 编码测试

网上的对H264与VP8视觉效果的比较测试参看链接 [2]VP8 vs H.264 Google WebM视频画质对比 。总体结果是VP8并不比H264有优势。

使用Google VP8 Code[4]中提供的编码器simple_encoder.exe对forman_cif.yuv编码,只是个demo,具体的参数未知,Usage: simple_encoder.exe <width> <height> <infile> <outfile>

编码后再使用simple_decoder.exe解码得到重建的yuv序列forman_vp8out.yuv.

再拿上次264的测试比较,264基本参数为jm16.2, main profile ,Qp=36,CABAC模式,编码100帧,二者不具可比性,仅为参考。

VP8编码300帧的时间只用了几秒,很快,编码输出的码流大小为413KB,原始yuv序列大小为44550KB,压缩比44550/413=107。上次264编码100帧后码流为75KB压缩比44550/(75*3)=198。

原始yuv与重建序列比较:

clip_image003

图1 org_frame5

clip_image004

图2 VP8_frame5

clip_image005

图3 org_frame86

clip_image006

图4 VP8_frame86

clip_image007

图5 264_frame86 QP36 mani profile CABAC仅作参考

图5是上次264编码测试的结果,平均PSNR 32.11,与VP8的不具可比性,仅为参考。

计算PSNR,VP8 300帧的平均PSNR为34.32,主观比较中,5、6、7帧的PSNR刚好在31 多点,主观效果不好,有马赛克,其他帧的主观质量都很不错,参看附件各帧PSNR” PSNRorgandVP8out.txt”。

虽然PSNR较高,但是主观上看每帧在色度上都能明显感觉到与原始序列有不同的地方。不过264得到的结果也有这种感觉。

4 VP8 编码测试(续)

参数为:vpxenc.exe -D --limit=100 --rt -v --psnr -w 352 -h 288 --fps=15/1 --min-q=36 --max-q=37 -o foreman_cif.vp8 foreman_cif.yuv 时,编码出的比特率 198673b/s,PSNR(Y) 35.84

--limit编码帧数,实际只编码了99帧。参数 --fps=rate/scale,不知道scale的意义。--fps=15/2 时:

99876b/s , PSNR(Y) 35.86

这样与264的比较没有什么意义。

同时固定码率在80kbp下比较:

VP8参数: vpxenc.exe -D --limit=100 --rt -v --psnr -w 352 -h 288 --fps=15/1 --end-usage=1 --target-bitrate=80 -o foreman_cifR.vp8 foreman_cif.yuv

264参数:main profile CABAC。-p FramesToBeEncoded=100 -p FrameRate=15 -p IntraPeriod=0 -p RateControlEnable=1 -p Bitrate=80000 -p SymbolMode=1

-p NumberReferenceFrames=3 -p BasicUnit=12 -p SearchRange=16

-p NumberBFrames=0

 

Bitrate(kbps)

SNR Y(dB)

输出大小

VP8

71.6

31.773

60KB

JM8.6

80.33

32.96

65.3KB

主观效果上VP8明显比264要差。

clip_image009

图表 2 vp8第86帧

clip_image011

图表 3 264 第86帧

clip_image013

图表 4 vp8第11帧

clip_image015

图表 5 264 第11帧

[1] VP8的前途与使命

http://oss.org.cn/?action-viewnews-itemid-10042

[2] VP8 vs H.264 Google WebM视频画质对比

http://news.newhua.com/news1/Eval_MMX/2010/524/10524133910CIK1GG9BE1FAF7F66IH9C6HC0GFAJ73IE82HFKC308D7.html

[3] Google VP8 Code 首次深入技术分析http://blog.fulin.org/2010/05/vp8_first_in_depth_tech_analysis.html

分析很透彻全面,原英文版http://x264dev.multimedia.cx/archives/377 。

[4] Google VP8 Code 下载 http://code.google.com/p/webm/downloads/list

[5] Google vp8 specs : VP8 Data Format and Decoding Guide.pdf

5 VP8 specs阅读

两种frame types

Intraframes,也称keyframes,264里的I帧

Interframes,P帧,根据前一帧为参考帧编码,不能容忍帧丢失。

没有B帧

golden frame 和altref farmes (alternative reference frames) 的概念,P帧的blocks可以从前一参考帧预测同样也可以从最近的golden frame 或altref farmes预测。Every key frame is automatically golden and altref, and any interframe may optionally replace the most recent golden or altrefframe.

Golden frames可以用来克服帧丢失,大概意思就是golden frames包含和重新编码了介于之间的interframes的变化(context updates)。

Intra prediction mode

l 16*16 四种 DC_PRED , V_PRED , H_PRED , and TM_PRED

typedef enum

{

DC_PRED, /* predict DC using row above and column to the left */

V_PRED, /* predict rows using row above */

H_PRED, /* predict columns using column to the left */

TM_PRED, /* propagate second differences a la "true motion" */

B_PRED, /* each Y subblock is independently predicted */

num_uv_modes = B_PRED, /* first four modes apply to chroma */

num_ymodes /* all modes apply to luma */

}

intra_mbmode;

l 4*4 10种

typedef enum

{

B_DC_PRED, /* predict DC using row above and column to the left */

B_TM_PRED, /* propagate second differences a la "true motion" */

B_VE_PRED, /* predict rows using row above */

B_HE_PRED, /* predict columns using column to the left */

B_LD_PRED, /* southwest (left and down) 45 degree diagonal prediction */

B_RD_PRED, /* southeast (right and down) "" */

B_VR_PRED, /* SSE (vertical right) diagonal prediction */

B_VL_PRED, /* SSW (vertical left) "" */

B_HD_PRED, /* ESE (horizontal down) "" */

B_HU_PRED, /* ENE (horizontal up) "" */

num_intra_bmodes

}

intra_bmode;

Inter prediction

Bool pro_last为0,前一帧为参考帧,如为1通过prob_gf 选择参考帧是黄金帧(0)还是替代帧(1)。

Chroma和luma的mv精度都是1/8 pixel。

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Chroma的mv是同一区域4个Y subblock的均值, U and V block 0 的mv是 Y subblocks { 0, 1, 4, 5}的均值。

变换

对于转换,VP8也是利用一个与H.264非常类似的方案。每个16 × 16块划分为16个4 × 4的DCT块,每个块由一个位准确的DCT作近似转化。然后,每个块的DC系数被收集到另一个4 × 4组,再对这个组做Hadamard转化。

第一个是完全省略了8 × 8变换(因为缺乏i8 × 8 模式)。

第二是转换规范自身。H.264标准采用了非常简化的“DCT”,与标准的DCT差别很大,以至于经常被称为HCT(H.264的余弦变换)。

这种简化的转换在压缩上比原来差大约1%,但大大简化了转换本身,使得仅仅用加,减,右移一位操作就能实现。

VP8使用一个非常精确,而且不太必要的版本,使用非常大的数字乘法(20091和35468)。

第三个区别是,Hadamard 变换在一些内部块上实现 ,不仅仅是i16 × 16。

转载于:https://www.cnblogs.com/mlj318/p/5723738.html


http://chatgpt.dhexx.cn/article/6AlcF9cL.shtml

相关文章

PCM(脉冲编码调制)、iLBC编解码、opus(声音编码格式)、VP8视频压缩格式、H.264数字视频压缩格式

目录 PCM&#xff08;脉冲编码调制&#xff09; 发展史 工作原理 iLBC编解码 基本介绍 技术优势 Opus&#xff08;声音编码格式&#xff09; 特性 播放 技术细节 VP8视频压缩格式 简介 突破创新 技术分析 H.264数字视频压缩格式 背景介绍 优势 特点 PCM&…

JavaCV音视频开发宝典:录制vp8和vp9编码的webm格式视频,以mp4转webm为例

《JavaCV音视频开发宝典》专栏目录导航 《JavaCV音视频开发宝典》专栏介绍和目录 ​ 前言 由于现代浏览器对webm格式的视频支持较好,如下图: 因此使用webm格式来作为主要的存储和回放视频格式。本章将使用mp4文件转webm为例,来讲一下JavaCV如何录制webm格式视频。 webm…

有关 VP8 的一些帧 Golden AltRef 的说明

---------------------------------------------------------------------------------------------------------------------- 一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984 软件下载地址: http://www.qiyicc.com/download/rtmpd…

主流编解码器(H.264 AVC, H.265 HEVC, VP8, VP9)比较

主流编解码器&#xff08;H.264 AVC, H.265 HEVC, VP8, VP9&#xff09;比较 本文转自&#xff1a;http://houh-1984.blog.163.com/blog/static/31127834201321995354105/ 概述 H.264(MPEG 4, class 10 )是目前嵌入式和移动设备中采用最多的视频编解码算法标准。目前超过50家…

即时通讯音视频开发(十七):视频编码H.264、VP8的前世今生

前言 目前从开发者的角度来说&#xff0c;音视频编码选H.264还是VP8几乎没有悬念&#xff08;个人认为这当然是H.264了&#xff09;。本文重在为读者从技术角度讲解H.264和VP8的发展渊源以及现时所面临的问题&#xff0c;相信读完此文后&#xff0c;对于即时通讯&#xff08;IM…

WebRTC 视频编解码类型的选择 VP8 H264 还是其他?(openh264编码,ffmpeg解码)

在你的WebRTC应用中,选择正确的视频编解码器很重要,但是如何选择又是一个棘手的问题。 WebRTC 视频编解码器 – 简要回顾 WebRTC 曾经很容易。你有 VP8、Opus 和 G.711。 G.711 被删除是因为我不想让你使用它。真的没有理由这样做。 后来,H.264 被添加为强制实现视频编解码器…

视音频编解码H264,265,MPEG-4,VP8,VP9知识总结

首先澄清几个基础知识&#xff1a; 一&#xff1a;封装格式&#xff1a; 我们常见的音视频文件格式例如&#xff1a;mp4 &#xff0c;flv,rmvb,avi等称为封装格式。封装格式里面封装了各种编码器编码的视频源信息的宽高比&#xff0c;视频轨&#xff0c;音频轨。例如视频源为…

MSVC2017 编译WebRTC Release VP8编码崩溃的问题

问题描述&#xff1a; 使用msvs2017编译webrtc。release版本使用VP8会出现奔溃&#xff0c;H264无问题。现象如下&#xff1a; 编译选项&#xff1a; "--argstarget_cpu\"x86\" is_debugfalse use_rttitrue is_clang false " 原因&#xff1a; MSVC编…

音视频基础1:H264、H265、MPEG-4、VP8、VP9编码基础知识

这里写自定义目录标题 个人认知&#xff0c;程序员职业发展出路编码器发展史编码原理H264H265 个人认知&#xff0c;程序员职业发展出路 随着5G时代的到来&#xff0c;音视频成功走上风口&#xff0c;程序员如何发展&#xff0c;其实不管是入门级选手还是30岁&#xff0c;35岁…

音视频基础:H264、H265、MPEG-4、VP8、VP9编码基础知识

编码器发展史 Android中创建编码器 MediaCodec.createEncoderByType("video/av"); //创建H264编码器 MediaCodec.createEncoderByType("video/hevc"); //创建H265编码器为什么会有这么多种编码器&#xff1f;看看他们的发展史的。 ITU-T这个组织是专门…

webrtc代码走读九(vp8 rtp 报文解析)

一、wireshark解析VP8报文方法 首先webrtc里面默认开启了FEC和SRTP功能&#xff0c;导致wireshark无法正常解析VP8的报文。所以若想了解VP8的RTP报文格式&#xff0c;还需要先关闭FEC、SRTP。 1、关闭FEC。 internalencoderfactory.cc文件屏蔽kRedCodecName、kUlpfecCodecNa…

vp8 的下载

1. vp8 的下载 页面地址 https://github.com/webmproject/libvpx git 下载 git clone https://github.com/webmproject/libvpx.git2. 在 android 上面搭建的 vp8 环境 页面地址 https://github.com/cmeng-git/vpx-android git 下载 git clone https://github.com/cmeng-gi…

VP8视频格式初探

作者&#xff1a; 阮一峰日期&#xff1a; 2010年5月20日 昨天&#xff0c;Google发布了一个开源项目WebM。 这个项目的目的&#xff0c;是在文件格式方面&#xff0c;为制作和发布互联网视频提供了一个开源的解决方案。 WebM采用MKV作为封装格式&#xff0c;里面的音频编码用V…

深入了解 VP8

部分翻译&#xff1a;http://x264dev.multimedia.cx/?p377 译者&#xff1a;delectate 问题一&#xff1a;vp8到底怎么样&#xff1f; 难道他真的比x264拥有更高的压缩比率&#xff0c;是个优秀的编码器吗&#xff1f;他真的比h264优秀吗&#xff1f;似乎On2自己都羞于承认……

VP8的前途与使命

文 / 金尹 VP8是视频压缩解决方案厂商On2推出的视频压缩格式。今年年初&#xff0c;Google完成了对On2的收购&#xff0c;随即开放了VP8视频编码技术源代码并免费提供给开发者使用。但业界对此一直褒贬不一&#xff0c;本文作者从多个角度进行阐述&#xff0c;对VP8的前途与发展…

如何使用Win10剪切板

几乎所有接触电脑的人都会使用CtrlC和CtrlV&#xff0c;但是每次CtrlC只能复制一次&#xff0c;并且会覆盖之前已经复制的内容。如果需要多次复制不同内容&#xff0c;那就操作多次。如果需要切换页面进行复制&#xff0c;特别不方便。其实&#xff0c;Win10有内置剪切板&#…

windows剪切板的历史记录

windows剪切板的历史记录 最近遇到一件比较坑的事情。当然可能也是我本人粗心大意了吧。但是这种事情难免要发生。比如说你要移动一个比较重要的东西&#xff0c;然后按了ctrlx&#xff0c;但是之间因为别的事情耽搁了一下&#xff0c;而自己的重要的东西还放在剪切板里面&…

win10如何查看剪切板内容?

cv大法我们经常用&#xff0c;但如果复制了新的内容但又想粘贴使用上次复制的内容怎么办&#xff1f; 其实复制新的内容并没有覆盖掉之前复制的内容&#xff0c;可以使用CtrlV快捷键打开剪切板&#xff0c;在剪切板里可以找到以前复制过的内容。 注意&#xff1a;这里的剪切板…

windows 剪贴板监控

迅雷下载或者旋风下载都有一个很有意思的剪贴板监控功能&#xff0c;当你打开剪贴板监控时&#xff0c;如果你复制了一个下载的URL&#xff0c;这两个程序都会弹出来下载框来让你去下载&#xff0c;显得很智能&#xff0c;昨天发现灵格斯词霸也有个剪贴板取词功能。 上个月写了…

Win10清空剪切板内容的方法介绍

剪切板是用户最经常使用的系统功能&#xff0c;可以对想要操作的内容进行临时缓存&#xff0c;但是长时间对里面的内容不清理的话&#xff0c;就会造成系统卡顿。下面小编就给大家介绍一下Win10清空剪切板内容的方法。 操作过程&#xff1a; 1、在Win10桌面空白处点击鼠标右键&…