你知道FFmpeg吗?了解过h264/h265/vp8/vp9编解码库吗?

我们日常生活中使用最广泛的五种视频编码:H264(AVC)、H265(HEVC)、vp8、vp9、av1都分别是什么?由哪些组织/公司实现的?编解码库的授权协议都是什么?他们又分别有什么优点?

今天就让博主带领诸位小伙伴们一起来简单了解一下,视频中的这几种常用的编解码器。

H264(AVC)

最常用的视频编码。

H.264在1997年ITU的视频编码专家组提出时被称为H.26L,在ITU与ISO合作研究后被称为MPEG4 Part10或H.264。

虽然上述两个组织提出了H264编码规范,但是并没有具体实现。

openh264

所以我们日常使用的视频编码大多由思科(cisco)开源的openh264编解码库:

http://www.openh264.org/。

x264

目前性能最好最完善的h264编解码库。

由大名鼎鼎的VLC播放器的维护机构,法国videolan开源组织维护的libx264编解码库:http://www.videolan.org/developers/x264.html。

videolan开源组织的前身是法国巴黎中央理工学院的一个学生项目。



这也是为什么音视频开发工程师默认会使用VLC播放器来测试音视频的原因,不仅仅是因为VLC强大,还因为VLC播放器就是事实上的h264/h265音视频编码的标准实现,如果VLC都播放不了你的视频,那肯定是你的视频有问题。

H265(HEVC)

x265

业界最好的h265(hevc)编解码库。

同样由大名鼎鼎的VLC播放器的维护组织法国videolan组织开源的libx265编解码库:

https://www.videolan.org/developers/x265.html

使用x264,x265编码的小伙伴们需要注意这两款编解码库使用GPL v2授权协议,商业软件使用需要遵守GPL v2协议。

ffmpeg内置openhevc编解码库

FFmpeg维护的H265(HEVC)的编解码库,能用。

http://openhevc.github.io/openHEVC/

kvazaar

FFmpeg项目引用的另一款开源的H265(HEVC)解码库,注意kvazaar解码库只提供H265解码,并不提供编码。

https://github.com/ultravideo/kvazaar

VP8

VP8google定义并开源的视频编解码标准和编解码库实现。

Google 收购了On2 Technologies,之后Google开放了其拥有的VP8视频编码技术源代码并免费提供给所有开发者使用,发布

WebM 开放网络媒体项目

VP8号称比H264编码性能更好,实际上没那么夸张,差不多相当于ffmpeg内置默认的openh264编解码库。VP8的压缩实现与H264有点区别就是VP8没有B帧,而H264有B帧。

VP8的优点是开源,没有H264/H265的专利版权风险,可以随便用,除了IE9以下版本的浏览器外,现代浏览器都支持VP8视频编码,当然也支持webm视频格式。

libvpx

libvpxWebM项目的子库,可以同时支持VP8VP9视频编码:

https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvpx.html

webP图片格式的图像编码就是使用的VP8编码进行压缩的。

WebM视频的视频编码也是采用VP8/VP9编码。

VP9

VP9也是google开源的用与比拼H265(HEVC)的编解码器,可以看出google真的很努力的在开源,这种开源的视频编码应该多一些,百花齐放才能促进音视频技术升级。

兼容性方面,除了IE9以下版本的浏览器外,现代浏览器都支持VP9视频编码,当然也支持webm视频格式。

libvpx

libvpx上面讲过了,稍微提一下。是WebM项目的子库,可以同时支持VP8和VP9视频编码:

https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvpx.html

AV1

重磅压轴,google最新推出的针对VP9编码有多项优化后的新的编解码器:AV1

AV1是Google VP10、Mozilla Daala以及Cisco Thor三款开源编码项目共同研发成果。AV1打破了之前编码标准中传统的二维运动矢量模型的限制,第一次引入了仿射变换运动模型,不仅可以描述平移运动,同时可以更好的表述如旋转、缩放等更加复杂的运动,有效的提升了视频编码效率

在实际测试中,AV1H265(HEVC)压缩率提升约27%,可以说是力压H265。是目前为止,世界上压缩性能最好的视频编解码器。再借用游戏界的话术来讲,那AV1就是“次世代”编解码器。



得益于AV1的开源和相比于H265更节省带宽的缘故,目前AV1有超过h265编码的趋势,更多视频平台和直播平台选择使用AV1编码,而不是H265。

目前使用AV1编码的主流流媒体平台有这几家:“奈飞、YouTube、BBC、爱奇艺”

尽管业界已经喊了4K喊了十多年,但是实际上4K普及率依然并不高,这些年主流的还是H264编码,尤其是在直播领域,h265编码基本上没什么应用。4K的普及不仅需要视频编解码技术的升级,还需要用户带宽和其他硬件配置的升级换代。在带宽费用如此高昂的时代,各大视频平台和直播平台厂商升级意愿都不高,但是因为有了AV1编码,各大视频平台和直播平台厂商能够使用AV1编码带来更少的带宽消耗,相信AV1编解码器的未来会更好。

这里只介绍FFmpeg内置的两个av1编解码器:dav1dlibrav1e

dav1d

FFmpeg和法国videolan开源组织共同维护的dav1d编解码库:https://www.videolan.org/projects/dav1d.html。

跟其他videolan维护项目不同的是,dav1d编解码库不受专利版权限制。

librav1e

号称最快的av1解码器。实际上dav1d和librav1e编解码器性能差不多,差别不大。

https://github.com/xiph/rav1e

如果觉得博主写得还不错,欢迎“关注、点赞、收藏”一键三连。

聊聊视频中的编解码器,你所不知道的h264、h265、vp8、vp9和av1编解码库的更多相关文章

  1. Android中Context详解 ---- 你所不知道的Context

    转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好,  ...

  2. 你所不知道的html5与html中的那些事第三篇

    文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作 ...

  3. JavaScript中你所不知道的Object(二)--Function篇

    上一篇(JavaScript中你所不知道的Object(一))说到,Object对象有大量的内部属性,而其中多数和外部属性的操作有关.最后留了个悬念,就是Boolean.Date.Number.Str ...

  4. Android中Context详解 ---- 你所不知道的Context(转)

    Android中Context详解 ---- 你所不知道的Context(转)                                               本文出处 :http://b ...

  5. 你所不知道的html5与html中的那些事(三)

    文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作 ...

  6. 你所不知道的html5与html中的那些事(五)——web图像

    文章简介:       现在的页面,一般都离不开图像,而怎么做才能让我们的页面中的图像加载的又快又好呢?在优化页面速度的时候还有什么事是你所不知道的呢?     下面看看今天我为大家带来了哪些关于we ...

  7. 你所不知道的html5与html中的那些事(四)——文本标签

    文章简介:       关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后 ...

  8. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  9. 你所不知道的 CSS 阴影技巧与细节 滚动视差?CSS 不在话下 神奇的选择器 :focus-within 当角色转换为面试官之后 NPOI 教程 - 3.2 打印相关设置 前端XSS相关整理 委托入门案例

    你所不知道的 CSS 阴影技巧与细节   关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧,介绍了一些关于 box-shadow  ...

随机推荐

  1. Android 三种菜单(Menu)的实现

    感谢大佬:https://blog.csdn.net/chileme/article/details/82944764 一.常用方法 java onCreateOptionsMenu(Menu men ...

  2. TableView 常用技巧与功能详解

    分割线顶格iOS8 UITableview分割线顶格的做法 //iOS8 Cell分割线顶格 if ([_tableView respondsToSelector:@selector(setSepar ...

  3. 关于单调性优化DP算法的理解

    Part1-二分栈优化DP 引入 二分栈主要用来优化满足决策单调性的DP转移式. 即我们设\(P[i]\)为\(i\)的决策点位置,那么\(P[i]\)满足单调递增的性质的DP. 由于在这种DP中,满 ...

  4. 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)

    1.简介 今天这一篇,宏哥主要讲解:利用WebDriver 提供可以读取.添加和删除cookie 信息的相关操作方法.验证浏览器中是否存在某个cookie.原因是:因为基于真实的cookie 的测试是 ...

  5. 小程序"errcode":41002错误问题如何解决?

    我的问题是:小程序在本地测试的时候是没有问题的,但是当我扫开发者中的项目中的二维码手机浏览测试的时候发现是没有数据的,然后调试工具中出现: {"errcode":41002,&qu ...

  6. 大话PHP设计模式笔记

    针对PHP的设计模式进行总结记录. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻 ...

  7. [LeetCode]21.合并两个有序链表(Java)

    原题地址: merge-two-sorted-lists 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 1: 输入:l1 = [1 ...

  8. 基于myscript.js的web手写板(支持中文识别)

    网上的手写板模板不少,但是支持中文识别的却不多,而且基本上都收费的,毕竟别人的中文库凭什么免费提供给你(说好的开源呢?说好的开源呢? ←_←) 好了,进入主题,myscript.js,在官网其实我并没 ...

  9. 二、MyBatis基础配置应用实例

    核心配置文件sqlMapConfig.xml Mybatis核心配置文件层级关系 1)environments标签 2)mapper标签 eg: 3)properties标签 数据源配置参数抽取至jd ...

  10. 昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现

    缓存淘汰算法 在高并发.高性能的质量要求不断提高时,我们首先会想到的就是利用缓存予以应对. 第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用. 但是, ...