基于ubuntu系统的HEVC视频编码与解码
大家好,这是我的第一篇博客,希望大家喜欢并且能关注我一下,今后有一些心得的话也会继续在这里分享给大家!
HEVC
HEVC,也称H.265,是一种视频压缩标准,相对于H.264,HEVC被认为不仅能提升视频压缩质量,还能够达到H.264两倍之压缩量,本文将介绍如何在ubuntu系统下实现基于HEVC的视频编码与解码。当然,读者也可以在windows下实现该过程。
官方代码下载
为实现HEVC视频编码与解码,首先在官方网站上下载HM12.16(也可以根据需要下载其他版本)参考代码,我们选择在ubuntu系统下进行,在HM12.16文件中按照build->linux
路径进入linux
文件夹。
在终端输入
make
对makefile
进行编译,编译完成后在根目录下将会生成一个新的bin
文件夹,并生成可执行文件TAppEncoderStatic
;
编码参数
本文中关于编码参数不做详细介绍,在cfg
文件中有几种参考配置文件,并且在doc
文件中,software-manual
对编码参数有详细介绍,建议大家阅读。合理地修改配置文件能够得到不同的编码效果,有助于大家对HEVC编码结构的理解。
需要注意的是在对于不同的YUV序列进行编码与解码时,在配置文件中的生成文件一定要修改名称,否则将会覆盖之前生成的.bin与.yuv文件。
代码运行
准备好配置文件之后,即可在终端运行HM12.16代码,输入以下命令:
./TAppEncoderStatic -c xxx.cfg
其中xxx.cfg
就是配置文件的名称。
运行结果
在这里我将贴出一些我的运行结果,供大家参考。
1.这是生成的每一帧的Y,U,V的PSNR值:
2.这是关于本次运行的SUMMARY,主要是总帧数,I,B,P帧所占的帧数以及其平均的PSNR值。
拓展
其实到这里关于如何在ubuntu系统下进行HEVC编码与解码的内容就已经结束了,但是我们进行HEVC编码与解码往往是需要对比原序列与编解码之后的序列,因此我将进一步介绍关于此的一些拓展:
在ubuntu系统下我们应该如何观看yuv序列以实现对原序列和编解码之后序列的对比?
①首先,我找到了一款ubutnu下播放yuv序列的软件,名为PYUV,我们可以利用这款软件整体地观察编解码前后两序列的区别,但也仅限于此。PYUV无法实现对两序列每一帧进行对比。
②基于此,我们可以使用ffmpeg
进行每一帧的对比,在ubuntu系统下,我们可以利用以下命令安装ffmpeg
:sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
sudo apt-get update
sudo apt-get install ffmpeg
ffmpeg -version 检测是否安装成功安装完成后,我们可以利用以下命令将yuv序列的每一帧提取出来:
ffmpeg -video_size 416*240 -i xxx.yuv -f image2 frame%d.jpg
其中416*240是视频的空间分辨率,可以根据实际情况进行修改, xxx.yuv为序列名称,生成结果是以framen(n为数字)命名的。这样我们就可以对序列的每一帧进行对比。
2.观察运行结果,可以发现只给出了Y,U,V分量的PSNR值,那么我们如何获得总的PSNR值呢?
依然可以采用ffmpeg
,命令行输入:ffmpeg -i input.jpg -i reference.jpg -filter_complex “psnr” “output_psnr.jpg”
其中,input.jpg为待求PSNR值图片的名称,reference.jpg为参考原图的名称,运行之后即可得到其PSNR值。
由此可见,ffmpeg
是一款非常方便的可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,推荐大家使用。
总结
以上就是笔者关于如何在ubuntu系统下实现HEVC视频编码与解码的过程总结,不足之处还望见谅,也希望大家能在评论区积极讨论。
基于ubuntu系统的HEVC视频编码与解码相关推荐
- HEVC视频编码技术
HEVC视频编码框架 HEVC编码框架与H.26X标准的编码框架类似,均采用基于块的混合模型. 图1 HEVC编码框架 如上图所示,HEVC编码器的工作过程为: 1.首先,视频编码器将输入视频图像划分 ...
- 基于ubuntu系统下的USB设备绑定
目录 前言 基本原理 实现方法 前言 在Ubuntu系统的使用中,没有对USB进行设备进行绑定的话,每次插拔或者顺序的不同,都会造成ttyUSB端口号的改变,不利于实际应用,一劳永逸地方法就是对其进行 ...
- OpenCV测量视频编码和解码的性能(附完整代码)
OpenCV测量视频编码和解码的性能 OpenCV测量视频编码和解码的性能 OpenCV测量视频编码和解码的性能 #include "opencv2/core/utility.hpp&quo ...
- HEVC视频编码技术概述
本周读书总结 1.编码框架 HEVC仍然沿用了基于块的视频混合编码框架,但是区别在于HEVC采用灵活的四叉树型划分结构,支持多种不同尺寸的编码块.预测块和变换块.编码框架如下图所示. 2.块的划分结构 ...
- 【笔记】H.265/HEVC 视频编码(四)——预测编码
预测编码时视频编码中的核心技术之一.对于视频信号来说,一幅图像内邻近像素之间有较强的空间相关性,相邻图像之间有较强的时间相关性.因此采用帧内预测和帧间预测的方式,去除视频的空域和时域的相关性.视频编码 ...
- 【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示
前言:随着跨平台越来越流行,.net core支持跨平台至今也有好几年的光景了.但是目前基于.net的跨平台,大多数还是在使用B/S架构的跨平台上:至于C/S架构,大部分人可能会选择QT进行开发,或者 ...
- 实验一:基于Ubuntu系统实现无人机自主飞行
ps:为避免出现错误,在进行新的一步时,需要关闭由于上一步操作打开的终端,并开启一个新的终端.例如:在开始第5步(安装MAVROS)之前,关闭由于第3步(安装ROS)打开的终端,并开启一个新的终端! ...
- H.265/HEVC视频编码标准总结
目录 1.HEVC的Profiles(档次),Levels(级别),Tier(层) 1.1 HEVC的Profiles(档次) 1.2 HEVC Levels(级别)和Tiers(层) 2.HEVC的 ...
- 【笔记】H.265/HEVC 视频编码(三)——编码结构
H.265/HEVC在编解码的设计上添加了多种新的语法结构,使得H.265/HEVC在压缩效率和网络适应性两个方面有显著提升. 一.编码结构 1.分层处理架构 视频序列是由若干连续时间连续的图像组成的 ...
最新文章
- 通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题
- glide等图片缓存框架替换缓存图片解决方案
- 标题和描述需注意什么才更有利于SEO首页优化?
- windows平台cl.exe编译pcre 8.13
- datagrid里面某一行双击打开代码
- linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序
- Mysql的锁机制之表锁
- 项目简单实用方式_组合替代继承_算法切换
- python3.5安装tensorflow_pip install tensorflowgpu在python3.5中的安装
- 给Web开发人员的以太坊入坑指南
- json字符串转换成json对象
- 【BZOJ1826】【tyvj2644】缓存交换,贪心+堆维护
- 【转载】Linux安装nginx
- web前端基础面试题
- Hadoop 十年解读与发展预测(插图+排版)
- win7点e出现计算机,Win7电脑蓝屏显示代码0x0000007e的解决方法
- IO端口和IO内存映射【waitting】
- vm时序数据库-导入数据
- Application启动流程
- Java数据类型:基本数据类型和引用数据类型