1.javaCV入门指南:序章2.JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用3.JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用4.javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?5.JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作?6.JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)7.JavaCV入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作8.javacv开发详解之1:调用本机摄像头视频(建议使用javaCV最新版本)9.javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)10.javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)11.javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)12.javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)13.javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)14.javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)15.javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗)16.javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)17.javaCV开发详解之10:基于dshow调用windows摄像头视频和音频,想要获取屏幕画面首选gdigrab18.javaCV开发详解之11:视频文件转gif动态图片实现,也支持摄像机、桌面屏幕、流媒体等视频源转gif19.javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图20.javaCV开发详解之13:简单使用FFmpeg-Filter过滤器处理音视频,添加特殊效果21.javaCV开发详解之14:音频重采样22.javaCV开发详解之15:视频帧像素格式转换23.javaCV开发详解之16:使用一张图片推流和一张图片录制成视频文件24.javaCV开发详解之17:GIF和APNG动态图片推流和录制成视频文件(以gif转mp4和apng转mp4为例)25.javaCV开发详解之18:音视频转码(音频编解码和视频编解码)26.JavaCV开发详解之19:如何开启GPU硬件加速,使用JavaCV进行音视频的硬解码和硬编码(支持intel、amd和nvidia)27.JavaCV开发详解之20:如何使用JavaCV制作ico图标,图片和视频生成ico图标,视频流录制ico图标28.JavaCV开发详解之21:如何使用JavaCV接入gb28181的ps流并推流到流媒体服务和接入海康大华sdk回调h264/hevc裸流29.JavaCV开发详解之22:http-flv拉流和http-flv推流及rtmp拉流和rtmp推流实例和flv推流和flv录制,关于rtmp/flv支持h265补充说明30.JavaCV开发详解之23:hls视频录制,m3u8切片录制和fmp4切片录制详解31.JavaCV开发详解之24:使用javacv录制dash视频分片,mpeg-dash视频录制,mpd视频录制32.JavaCV开发详解之25:使用javacv保存raw视频像素格式(yuv或者rgb),并使用ffplay播放raw33.JavaCV开发详解之26:使用javacv对视频进行连续截图和覆盖截图,支持png,jpg,bmp等格式快速连续截图,适用于rtsp/rtmp/flv/hls等流媒体和本地视频快照34.JavaCV开发详解之26补充篇:视频连续截图并按日期格式生成图片文件名称,支持png,jpg,bmp等格式快速连续截图35.JavaCV开发详解之27:使用javacv把视频切割成多个视频分片文件,以mp4为例,把视频切割成MP4分片文件36.JavaCV开发详解之28:如何使用javacv进行多图推流和多图合成视频文件,以批量jpg图片推流rtmp和jpg合成flv视频文件为例37.JavaCV开发详解之29:使用javacv将多个视频拼接合成单个视频,多个音频拼接合成单个音频,以多个mp4视频合成一个mp4为例38.JavaCV开发详解之30:使用javacv拉取rtsp视频流,rtsp解复用器详解。如何把rtsp调教的服服帖帖,让rtsp拉流不再丢包39.JavaCV开发详解之31:如何计算pts/dts时间戳,在视频转码和转复用中如何自行计算pts/dts时间戳40.JavaCV开发详解之32:使用filter滤镜实现中文字符叠加41.JavaCV开发详解之33:使用filter滤镜实现动态日期时间叠加42.JavaCV开发详解之34:使用filter滤镜实现字符滚动和无限循环滚动字符叠加,跑马灯特效制作43.JavaCV开发详解之36:使用delogo滤镜实现去除和屏蔽视频水印44.JavaCV开发详解之35:使用filter滤镜实现画中画,以屏幕画面叠加摄像头画面为例45.javaCV开发详解之GIF动态图片录制补充篇:windows桌面屏幕画面录制成gif动态图片,支持桌面屏幕任意区域生成gif,可扩展支持MacOS/安卓/linux等平台,可扩展支持apng动态图片46.如何在龙芯架构和国产化操作系统平台上运行javacv47.聊聊视频中的编解码器,你所不知道的h264、h265、vp8、vp9和av1编解码库
48.JavaCV音视频开发宝典:vb8和vp9编码的webm格式视频文件转成mp4文件49.JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法50.JavaCV更新到1.5.x版本后的依赖问题说明以及如何精简依赖包大小51.JavaCV音视频开发宝典:使用JavaCV和springBoot实现websocket-flv直播服务,无需流媒体服务,浏览器网页flv.js播放器直接播放rtsp,rtmp等实时视频52.JavaCV音视频开发宝典:无需流媒体服务也无需转码(低资源消耗),使用JavaCV和springBoot实现http-flv转封装直播服务,浏览器网页flv.js直接播放rtp、rtsp、rtmp实时视频53.JavaCV音视频开发宝典:使用JavaCV和springBoot实现http-flv直播服务,无需流媒体服务,浏览器网页flv.js转封装方式播放rtsp,rtmp和桌面投屏实时画面54.javacv开发详解补充篇:如何将rgb/bgr像素数据优雅高效的转换为BufferedImage55.javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题56.JavaCV音视频开发宝典:录制vp8和vp9编码的webm格式视频,以mp4转webm为例57.音视频处理、图像处理、图像识别和字符识别全能库JavaCV完整教程(包含完整JavaCV入门、JavaCV实战、ffmpeg、opencv和tesserac教程)58.JavaCV音视频开发宝典:使用JavaCV实现webm直播服务,无需流媒体服务,无需mse转封装插件(flv.js,hls.js),浏览器原生video标签直接播放rtsp,rtmp和桌面投屏直播59.JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持60.JavaCV音视频开发宝典:JavaCV读取Base64编码图片并解析预览图片61.JavaCV音视频开发宝典:使用JavaCV采集windows桌面屏幕画面并录屏mp4视频文件(FFmpeg基于dshow方式采集windows系统桌面画面)62.JavaCV音视频开发宝典:使用JavaCV采集windows系统声音并录制成mp3音频文件(FFmpeg采集windows系统声音)63.JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别64.JavaCV的gpl v2许可协议排雷,写在TikTok违反GPLv2许可使用OBS源码的当下65.JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并转码推流rtmp流媒体服务66.JavaCV音视频开发宝典:rtsp拉流转码方式转推到rtmp67.javacv开发详解补充篇:解决转流后视频画面快进慢放,时间跳动过大,监控视频时间戳重新计算pts和dts68.JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像69.JavaCV进阶opencv图像检测识别:ffmpeg视频图像画面人脸检测70.JavaCV进阶opencv图像检测识别:摄像头图像人脸检测71.javaCV文字识别之2:视频文字识别和视频提取字幕文字字符72.javaCV文字识别之1:基于google的tesserac ocr识别图片中的文字,跨平台支持英文中文简体繁体等各种字符识别73.javaCV开发详解之补充篇:根据视频时间戳同步播放图像画面以及视频倍速播放实现74.javaCV开发详解补充篇:基于avfoundation的苹果Mac和ios获取屏幕画面及录屏/截屏以及摄像头画面和音频采样获取实现75.javacpp-FFmpeg系列补充:FFmpeg拉流截图实现在线演示demo(视频截图并返回base64图像,支持jpg/png/gif/bmp等多种格式)76.javacpp-FFmpeg系列之3: 像素图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转,BufferdImage转Base64编码)77.javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题78.javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据79.javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片80.javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)81.javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)82.javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印83.javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作84.javaCV图像处理之Frame、Mat和IplImage三者相互转换(使用openCV进行Mat和IplImage转换)85.java音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例86.音视频编解码问题:javaCV如何快速进行音频预处理和解复用编解码(基于javaCV-FFMPEG)87.JavaCV实战专栏文章目录(JavaCV速查手册)88.JavaCV复杂滤镜filter特效处理入门教程和常用案例汇总89.javacv教程文档手册开发指南汇总篇90.javacv实现实时视频截图和录像服务easyCV91.JavaCV入门指南教程目录
你知道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
VP8是google定义并开源的视频编解码标准和编解码库实现。
Google 收购了On2 Technologies,之后Google开放了其拥有的VP8视频编码技术源代码并免费提供给所有开发者使用,发布
WebM 开放网络媒体项目
VP8号称比H264编码性能更好,实际上没那么夸张,差不多相当于ffmpeg内置默认的openh264编解码库。VP8的压缩实现与H264有点区别就是VP8没有B帧,而H264有B帧。
VP8的优点是开源,没有H264/H265的专利版权风险,可以随便用,除了IE9以下版本的浏览器外,现代浏览器都支持VP8视频编码,当然也支持webm视频格式。
libvpx
libvpx是WebM项目的子库,可以同时支持VP8和VP9视频编码:
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打破了之前编码标准中传统的二维运动矢量模型的限制,第一次引入了仿射变换运动模型,不仅可以描述平移运动,同时可以更好的表述如旋转、缩放等更加复杂的运动,有效的提升了视频编码效率
在实际测试中,AV1比H265(HEVC)压缩率提升约27%,可以说是力压H265。是目前为止,世界上压缩性能最好的视频编解码器。再借用游戏界的话术来讲,那AV1就是“次世代”编解码器。

得益于AV1的开源和相比于H265更节省带宽的缘故,目前AV1有超过h265编码的趋势,更多视频平台和直播平台选择使用AV1编码,而不是H265。
目前使用AV1编码的主流流媒体平台有这几家:“奈飞、YouTube、BBC、爱奇艺”
尽管业界已经喊了4K喊了十多年,但是实际上4K普及率依然并不高,这些年主流的还是H264编码,尤其是在直播领域,h265编码基本上没什么应用。4K的普及不仅需要视频编解码技术的升级,还需要用户带宽和其他硬件配置的升级换代。在带宽费用如此高昂的时代,各大视频平台和直播平台厂商升级意愿都不高,但是因为有了AV1编码,各大视频平台和直播平台厂商能够使用AV1编码带来更少的带宽消耗,相信AV1编解码器的未来会更好。
这里只介绍FFmpeg内置的两个av1编解码器:dav1d和 librav1e。
dav1d
由FFmpeg和法国videolan开源组织共同维护的dav1d编解码库:https://www.videolan.org/projects/dav1d.html。
跟其他videolan维护项目不同的是,dav1d编解码库不受专利版权限制。
librav1e
号称最快的av1解码器。实际上dav1d和librav1e编解码器性能差不多,差别不大。
https://github.com/xiph/rav1e
如果觉得博主写得还不错,欢迎“关注、点赞、收藏”一键三连。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库