热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

聊聊视频中的编解码器,你所不知道的h264、h265、vp8、vp9和av1编解码库

你知道FFmpeg吗?了解过h264h265vp8vp9编解码库吗?我们日常生活中使用最广泛的五种视频编码:H264(AVC)、H265(HEVC)、vp8、vp9、av1都分别是

你知道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

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

本文来自博客园,作者:eguid,没有作者允许禁止转载,取得作者同意后转载需注明作者名和原文链接:https://www.cnblogs.com/eguid/p/16015446.html



推荐阅读
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • Android开发常见问题汇总(含Gradle解决方案)第二篇
    本文继续深入探讨Android开发中常见的问题及其解决方案,特别聚焦于Gradle相关的挑战。通过详细分析和实例演示,帮助开发者高效解决构建过程中的各种难题,提升开发效率和项目稳定性。 ... [详细]
  • Couldnotfindcodecparametersforstream0(Video:h264,none)这个方法没成功: 在使用ffmpeg进行拉流分离音视频数据 ... [详细]
  • 微软确认Win11新设计不影响系统性能
    Windows 11引入了一系列新的设计元素,标志着自Windows 8以来界面的重大转变。微软通过其Fluent Design系统不断推进设计语言的发展,特别是在最新版本的Windows中加入了名为'Mica'的新材质。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在VS2013中编译FFMPEG时遇到的问题及解决方案
    在使用VS2013编译旧版本FFMPEG库时遇到了一些问题,因为官方并未提供预编译的LIB和DLL文件。由于对Linux环境不熟悉,只能在Windows环境下进行配置和编译。具体步骤如下:首先,下载FFMPEG的源代码;然后,安装必要的编译工具和依赖项;接着,配置Visual Studio 2013的项目设置;最后,解决编译过程中出现的各种错误和警告。通过这些步骤,最终成功编译出所需的FFMPEG库文件。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 近期,有同事希望下载网络上的一些有趣视频用于个人用途,但在尝试过程中遇到了下载难题。通过使用Chrome开发者工具检查网络请求后,发现视频并非以常见的MP4格式提供,而是通过多个TS片段进行流式传输。为了高效地批量下载这些TS文件,可以利用FFmpeg这一强大的多媒体处理工具,实现自动化下载和合并,从而轻松获取完整的视频内容。 ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • 使用Java ... [详细]
  • cicadaplayer播放器做到了足够的抽象ffmpeg只是一个工具。SuperMediaPlayer处理整个播放器的piepline具体任务交给各个service做,比如dem ... [详细]
author-avatar
中国脐橙在线
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有