大家好,这是我的第一篇博客,希望大家喜欢并且能关注我一下,今后有一些心得的话也会继续在这里分享给大家!

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编码与解码往往是需要对比原序列与编解码之后的序列,因此我将进一步介绍关于此的一些拓展:

  1. 在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视频编码与解码相关推荐

  1. HEVC视频编码技术

    HEVC视频编码框架 HEVC编码框架与H.26X标准的编码框架类似,均采用基于块的混合模型. 图1 HEVC编码框架 如上图所示,HEVC编码器的工作过程为: 1.首先,视频编码器将输入视频图像划分 ...

  2. 基于ubuntu系统下的USB设备绑定

    目录 前言 基本原理 实现方法 前言 在Ubuntu系统的使用中,没有对USB进行设备进行绑定的话,每次插拔或者顺序的不同,都会造成ttyUSB端口号的改变,不利于实际应用,一劳永逸地方法就是对其进行 ...

  3. OpenCV测量视频编码和解码的性能(附完整代码)

    OpenCV测量视频编码和解码的性能 OpenCV测量视频编码和解码的性能 OpenCV测量视频编码和解码的性能 #include "opencv2/core/utility.hpp&quo ...

  4. HEVC视频编码技术概述

    本周读书总结 1.编码框架 HEVC仍然沿用了基于块的视频混合编码框架,但是区别在于HEVC采用灵活的四叉树型划分结构,支持多种不同尺寸的编码块.预测块和变换块.编码框架如下图所示. 2.块的划分结构 ...

  5. 【笔记】H.265/HEVC 视频编码(四)——预测编码

    预测编码时视频编码中的核心技术之一.对于视频信号来说,一幅图像内邻近像素之间有较强的空间相关性,相邻图像之间有较强的时间相关性.因此采用帧内预测和帧间预测的方式,去除视频的空域和时域的相关性.视频编码 ...

  6. 【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示

    前言:随着跨平台越来越流行,.net core支持跨平台至今也有好几年的光景了.但是目前基于.net的跨平台,大多数还是在使用B/S架构的跨平台上:至于C/S架构,大部分人可能会选择QT进行开发,或者 ...

  7. 实验一:基于Ubuntu系统实现无人机自主飞行

     ps:为避免出现错误,在进行新的一步时,需要关闭由于上一步操作打开的终端,并开启一个新的终端.例如:在开始第5步(安装MAVROS)之前,关闭由于第3步(安装ROS)打开的终端,并开启一个新的终端! ...

  8. H.265/HEVC视频编码标准总结

    目录 1.HEVC的Profiles(档次),Levels(级别),Tier(层) 1.1 HEVC的Profiles(档次) 1.2 HEVC Levels(级别)和Tiers(层) 2.HEVC的 ...

  9. 【笔记】H.265/HEVC 视频编码(三)——编码结构

    H.265/HEVC在编解码的设计上添加了多种新的语法结构,使得H.265/HEVC在压缩效率和网络适应性两个方面有显著提升. 一.编码结构 1.分层处理架构 视频序列是由若干连续时间连续的图像组成的 ...

最新文章

  1. 通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题
  2. glide等图片缓存框架替换缓存图片解决方案
  3. 标题和描述需注意什么才更有利于SEO首页优化?
  4. windows平台cl.exe编译pcre 8.13
  5. datagrid里面某一行双击打开代码
  6. linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序
  7. Mysql的锁机制之表锁
  8. 项目简单实用方式_组合替代继承_算法切换
  9. python3.5安装tensorflow_pip install tensorflowgpu在python3.5中的安装
  10. 给Web开发人员的以太坊入坑指南
  11. json字符串转换成json对象
  12. 【BZOJ1826】【tyvj2644】缓存交换,贪心+堆维护
  13. 【转载】Linux安装nginx
  14. web前端基础面试题
  15. Hadoop 十年解读与发展预测(插图+排版)
  16. win7点e出现计算机,Win7电脑蓝屏显示代码0x0000007e的解决方法
  17. IO端口和IO内存映射【waitting】
  18. vm时序数据库-导入数据
  19. Application启动流程
  20. Java数据类型:基本数据类型和引用数据类型

热门文章

  1. Intellij (IDEA) 学生认证全流程
  2. Android开发之视频播放器
  3. 友豆火山CPG插件开发003-顶级对象
  4. “士兵突击”职场攻略心法
  5. Zotero安装配置插件教程: 多端同步、自动翻译、抓取题录信息、参考文献等
  6. Android HOME键那些事
  7. Cadence OrCAD Capture 四种定位到图纸指定位置的方法说明
  8. 这款耳机亲测,性价比堪比 AirPods
  9. 二维码怎么生成彩色样式
  10. 六安职院美和易思互联网+特色专业举行第一届HTML网页设计大赛