FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc
《FFmpeg开发实战:从零基础到短视频上线》该书的第一章介绍了如何在Linux环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。
H.266是H.265的升级版本,H.265的视频编码标准为HEVC(High Efficiency Video Coding,高效视频编码),H.266的视频编码标准为VVC(Versatile Video Coding,多功能视频编码)。其中VVC是HEVC的后继者,目标是在相同视觉质量下将比特率降低50%。
至于VVEnc(Versatile Video Encoder)是一个开源的高效视频编码器,它实现了最新的视频编码标准VVC,能够把视频数据按照H.266标准编码为VVC格式。VVEnc的源码托管地址为https://github.com/fraunhoferhhi/vvenc,国内的镜像地址为https://gitee.com/mirrors/vvenc。
接下来以华为的欧拉系统为例,介绍如何在Linux环境给FFmpeg集成H.266的编码器vvenc,具体的操作步骤说明如下:
一、编译安装VVEnc
先下载最新的vvenc源码,再把vvenc源码包上传到Linux服务器的/usr/local/src目录下。接着登录Linux服务器的控制台,执行下面命令解压源码包:
cd /usr/local/src
unzip vvenc-v1.13.1.zip
然后执行下面命令配置vvenc的编译环境:
cd vvenc-v1.13.1
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=1 --install-prefix=/usr/local ..
如果看到cmake命令返回类似下面的“Configuring done”和“Generating done”字样,就表示配置好了vvenc的编译环境:
-- VVENC_ENABLE_THIRDPARTY_JSON: ON
-- Performing Test SUPPORTED_mxsave
-- Performing Test SUPPORTED_mxsave - Success
-- Performing Test SUPPORTED_msse4_2
-- Performing Test SUPPORTED_msse4_2 - Success
-- Performing Test SUPPORTED_mavx2
-- Performing Test SUPPORTED_mavx2 - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/vvenc-v1.13.1/build
于是执行下面命令编译和安装vvenc,编译完成的vvenc库将会安装到cmake指定的/usr/local目录。
make
make install
二、编译安装FFmpeg
先下载最新的FFmpeg源码(版本号需大于等于7.1),再把FFmpeg源码包上传到Linux服务器的/usr/local/src目录下。接着登录Linux服务器的控制台,执行下面命令解压源码包:
cd /usr/local/src
unzip ffmpeg-n7.1.1.zip
确保Linux环境已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第一章的“1.2 Linux系统安装FFmpeg”安装了H.264的编码器libx264和H.265的编码器libx265,然后执行下面命令配置FFmpeg的编译环境:
cd ffmpeg-n7.1.1
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libvvenc --enable-iconv --enable-gpl --enable-nonfree
配置完毕执行下面命令编译和安装FFmpeg,编译完成的ffmpeg库将会安装到configure指定的/usr/local/ffmpeg目录。
make
make install
三、查看FFmpeg的安装结果
运行下面命令查看FFmpeg的安装版本:
ffmpeg -version
上面命令返回的FFmpeg版本信息如下:
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 10.3.1 (GCC)
configuration: --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libvvenc --enable-iconv --enable-gpl --enable-nonfree
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
根据以上返回的版本信息,可知已安装的FFmpeg版本号为7.1.1,同时configuration这行找到“--enable-libvvenc”,说明FFmpeg已经启用了H.266的编码器libvvenc。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc的更多相关文章
- FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建
前言 本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8. FFmpeg简介 FFmpeg是领先的多媒体框架,能够解码 ...
- FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
前言 ffmpeg播放rtsp网络流和摄像头流. Demo 使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克 使用ffmpeg播放网络rtsp文件流 ...
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)
源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明
- FFmpeg开发笔记(一)搭建Linux系统的开发环境
对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库.不过考虑到刚开始仅仅调用 ...
- FFmpeg开发笔记(二)搭建Windows系统的开发环境
由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的.不过若有已经 ...
- FFmpeg开发实战(一):FFmpeg 打印日志
在Visual Studio 开发(二):VS 2017配置FFmpeg开发环境一文中,我们配置好了FFmpeg的开发环境,下面我们开始边实战,边学习FFmpeg. 首先,我们要学习的就是FFmpeg ...
随机推荐
- wxformbuilder 如何生成python 代码
?问题 正常通过F8->F6 ,我执行这两步操作后如下图,以.fbp格式显示,没生成文件 解决方案 object properties 下勾选python 效果图:
- Jmeter tcp 返回500,但服务器收到请求
解决方法:再end of line(Eol)bytes value 正确写上报文最后两位十进制字节码
- 遍历列表、元组或字符串的函数enumerate
这两天在处理遇到的问题,循环遍历列表中的字典并输出到excel中 查阅资料发现了一个正和我意的函数 所以周一一上班我就开始试一试 然而发现 enumerate函数只适用于列表.元组或字符串的函数 语法 ...
- Qt关于使用QSqlQuary::size()这个函数值返回是-1
QSqlQuary::size( ) 今天做项目的时候,用Qt连接Oracle数据库,前面都是连接成功,但是用SQL语句去操作数据库的时候,发现老是读不到内容,卡了好久. QSqlQuery Rule ...
- nginx 部署vue http、https
nignx配置文件 server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_u ...
- 堆排序(内置模块 heapq )(NB)
博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import heapq # q->queue 优先队列 import r ...
- Windows 终端远程连接 Ubuntu
博客地址:https://www.cnblogs.com/zylyehuo/ 查看 ip 的方式参考以下链接 Ubuntu 下查看 ip - zylyehuo - 博客园 在 windows 终端中执 ...
- VMware ESXi系统
esxi全称"VMware ESXi",是可直接安装在物理服务器上的强大的裸机管理系统,是一款虚拟软件,不需安装其他操作系统,是VMware服务器虚拟化的基础.通过直接访问并控制底 ...
- APEX实战第3篇:如何完善项目基础功能
上一篇<APEX实战第2篇:构建自己第一个APEX程序>虽然有了程序,但实在是太单薄! 本篇将会介绍一些数据库的基础知识,演示如何通过函数.触发器.存储过程.视图等来完善项目的一些基础功能 ...
- python操作PC版微信,给指定好友发信息(键鼠操作和复制粘贴相关库)
主要用来"pyautogui"."pyperclip"两个模块 pyautogui 主要用于控制键盘和鼠标操作.详细参考https://blog.csdn.ne ...