热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HEVC方案软编解码器

1.解码器:A.ffmpeg,内置有HEVC解码器,其中代码基本来自openHEVC项目,但ffmpeg的HEVC解码器并不保证包含ope

1. 解码器:

A. ffmpeg, 内置有HEVC解码器,其中代码基本来自openHEVC项目,但ffmpeg的HEVC解码器并不保证包含openHEVC项目的最新代码

http://ffmpeg.org/


B. openHEVC,解码器框架完全是基于ffmpeg框架开发的,意味着对ffmpeg的耦合性很强,可以快速集成到ffmpeg中。

https://github.com/OpenHEVC/openHEVC

PC平台的编译:

mkdir build                             # 在源码目录下建立build文件夹,后续会用cmake来编译;

cd build                                  # 进入编译目录build;

cmake ..                                 # cmake工具生成编译所需的Makefile文件;

sudo make                             # 编译目标文件;


Android source code下编译:

下面做怎样在Android的source code编译环境中编译出可执行的工具:

需要注意的是用git clone下来的源码在hevc_rext分支,要在Android的source code中编译需要切换分支

git branch -a                                       # 查看所有分支

git checkout remotes/origin/android   #切换到android分支

可以看到源码中已经集成了Android.mk文件,这时候只需要在顶层目录下运行mm就可以编译了。



C. libde265, 最初好像只有解码器,目前代码里面已经支持编码器了。

https://github.com/strukturag/libde265


D. Ittiam HEVC decoder, 是印度一家公司编写的解码器(印度阿三也很强大的), 这个编码器被google集成到了Android的源代码中作为HEVC的软解decoder。

http://androidxref.com/7.1.1_r6/xref/external/libhevc/


Android source code下编译:

此开源项目的链接是Android source code的external目录下的libhevc,只有解码器, 应该是ARM平台上性能比较好的解码器,不然google为何集成它?

顶层目录下有Android.mk, 用来生成libhevcdec.a静态库, 测试用的可执行文件位于test目录中,编译后的可执文件为:hevcdec。




E. Cisco的Thor,HEVC的编码器。


https://github.com/cisco/thor


PC平台下的编译:

Android source code 下编译:



2. 编码器:


A. 前面提到的libde265和Thor, 也支持编码。


https://github.com/strukturag/libde265

https://github.com/cisco/thor

B. x265基本上是目前画质最好的编码器。

http://x265.org/


PC平台编译x265:

cd build/linux/

make

编译完成后可生成动态库文件和可执行文件,这个默认是8bit source的编译结果,在同级目录下有8bit, 10bit, 12bit对应的生成结果。

./x265 --profile mainstillpicture --input-res 2560x1440 --fps 1 /tmp/output_2560x1440.yuv -o /tmp/output.265

ffplay /tmp/output.265


验证前最好准备好yuv420p 8-bit的ideo数据, 这里使用的是2K图片用ffmpeg转换后的yuv数据,请注意分辨率。

ffmpeg -i /tmp/BRAVIA-1.jpg -pix_fmt yuvj420p /tmp/output_2560x1440.yuv     #此处转换出来的是8-bit YUV数据

ffplay -f rawvideo -video_size 3840x2160 /tmp/output_2560x1440.yuv              #播放时默认为YUV420P 8-bit数据


ffmpeg -i /tmp/BRAVIA-1.jpg -pix_fmt yuv420p10be /tmp/output_2560x1440.yuv                              # 指定输出格式为YUV420P 10-bit数据

ffplay -f rawvideo -video_size 3840x2160 -pix_fmt yuv420p10be /tmp/output_2560x1440.yuv


C. f265, Vantrix开源项目


https://vantrix.com/f-265/



推荐阅读
  • 求助高手:下载的压缩包中包含CMake文件,如何在Windows环境下使用已安装的CMake GUI进行运行?
    从GitHub仓库 `https://github.com/vonmax007/RobotSimulation` 下载的代码包含多种算法,其中算法1的文件目录中包含了CMake文件。为了在Windows环境下使用已安装的CMake GUI运行这些文件,需要先确保CMake已正确安装,并按照以下步骤操作:打开CMake GUI,设置源代码路径和构建路径,点击“Configure”配置项目,然后点击“Generate”生成构建文件。最后,在生成的构建目录中使用命令行或IDE进行编译和运行。 ... [详细]
  • 【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库
    【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 探讨在内核中集成头文件的可行性与好处,特别是在处理外部模块和BPF应用时的作用。 ... [详细]
  • 本文档详细介绍了购物车系统V0612版中的用户登录机制及购物功能实现方法。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
author-avatar
妹纸叫BLACK
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有