登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
FFmpeg开发笔记(七十三)Windows给FFmpeg集成MPEG-5视 ...
FFmpeg开发笔记(七十三)Windows给FFmpeg集成MPEG-5视频编解码器
[ 复制链接 ]
梅克
9 小时前
MPEG-5是新一代的国际音视频编解码标准,像我们熟悉的MP3、MP4等音视频格式就来自于MPEG系列。MP3格式的说明介绍参见《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2 MP3音频”,MP4格式的说明介绍参见《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”。 MPEG-5现已开源MPEG-5 EVC的视频编解码器,其中视频解码器的开源库叫libxevd,视频编码器的开源库叫libxeve。如今EVC的编解码器libxevd和libxeve日渐成熟,从7.0版本开始的最新FFmpeg源码已经支持EVC的编解码器libxevd和libxeve。
接下来以微软的视窗系统为例,介绍如何在Windows环境给FFmpeg集成MPEG-5 EVC视频编解码器libxevd和libxeve,具体的操作步骤说明如下:
一、配置libxevd
libxevd是一款MPEG-5的EVC视频解码器。它的源码托管页面在https://github.com/mpeg5/xevd/,最新版本是2024年4月发布的xevd-0.5.0,该版本的源码包下载地址是https://codeload.github.com/mpeg5/xevd/tar.gz/refs/tags/v0.5.0。
libxevd的配置步骤说明如下。
1、下载最新的xevd源码,再把xevd源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:
tar zxvf xevd-0.5.0.tar.gz
cd xevd-0.5.0
复制代码
2、在xevd目录下创建新文件version.txt,文件内容填入“v0.5.0”,表示解码器的版本为0.5.0。
3、执行下面命令配置xevd:
mkdir build
cd build
cmake ..
复制代码
配置完毕,会在build目录下找到XEVD.sln,这就是xevd的Visual Studio项目工程文件。
二、编译libxevd
在xevd工程的build目录下创建xevd.def,并往该文件填入以下内容(其中函数列表来自inc\xevd.h定义的函数):
LIBRARY xevd
EXPORTS
xevd_create
xevd_delete
xevd_decode
xevd_pull
xevd_config
xevd_info
复制代码
打开Visual Studio 2022,在欢迎页面单击右侧的“打开项目或解决方案”,在弹出的文件对话框中选择xevd-0.5.0\build目录下的XEVD.sln。
打开xevd工程后,右击解决方案管理器的xevd_dynamic模块,右键菜单依次选择:属性→配置属性→链接器→输入,在窗口右侧的模块定义文件栏填写xevd.def的绝对路径。继续依次选择:配置属性→链接器→高级,在窗口右侧的导入库栏填写待生成xevd.lib的绝对路径。完成设置后,单击右下角的确定按钮,保存xevd.def和xevd.lib的路径配置。
依次选择顶部菜单:生成→配置管理器,在打开的配置管理器窗口上,找到左上角的“活动解决方案配置”下拉框,把Debug模式改为Release模式,再单击窗口右下角的关闭按钮。
依次选择顶部菜单:生成→生成→生成xevd_dynamic,Visual Studio就开始编译xevd_dynamic模块。编译过程可在Visual Studio界面下方观察,直到编译完成如下图所示。
此时可在xevd-0.5.0\build\src_main\Release目录下找到xevd.lib和xevd.dll,这两个文件就是编译生成的libxevd库文件。
三、安装libxevd
确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 Windows系统安装FFmpeg”的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装libxevd。
1、在msys64的/usr/local目录下新建libxevd目录,并在该目录下创建lib子目录;
2、把xevd工程中build\src_main\Release目录下的xevd.lib和xevd.dll复制到第一步创建的lib目录;
3、在lib目录下创建pkgconfig子目录,并把xevd工程的build\xevd.pc复制到pkgconfig目录;然后打开xevd.pc,把开头四行改成下面这样。
prefix=/usr/local/libxevd
exec_prefix=${prefix}/bin
libdir=${prefix}/lib
includedir=${prefix}/include
复制代码
4、在msys64的/usr/local/libxevd目录下创建include目录,然后把xevd工程中inc\xevd.h和build\xevd_exports.h复制到刚才创建的include目录;
经过以上步骤操作后的libxevd目录结构如下所示。
/usr/local/libxevd
|--------------- lib
| |----- xevd.lib
| |----- xevd.dll
| |----- pkgconfig
| |----- xevd.pc
|--------------- include
| |----- xevd.h
| |----- xevd_exports.h
复制代码
四、配置libxeve
libxeve是一款MPEG-5的EVC视频编码器。它的源码托管页面在https://github.com/mpeg5/xeve/,最新版本是2024年6月发布的xeve-0.5.1,该版本的源码包下载地址是https://codeload.github.com/mpeg5/xeve/tar.gz/refs/tags/v0.5.1。
注意:由于FFmpeg仅支持版本号大于等于0.5.1的libxeve,因此务必下载xeve-0.5.1,不可下载xeve-0.5.0。
libxeve的配置步骤说明如下。
1、下载最新的xeve源码,再把xeve源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:
tar zxvf xeve-0.5.1.tar.gz
cd xeve-0.5.1
复制代码
2、在xeve目录下创建新文件version.txt,文件内容填入“v0.5.1”,表示编码器的版本为0.5.1。
3、执行下面命令配置xeve:
mkdir build
cd build
cmake ..
复制代码
配置完毕,会在build目录下找到XEVE.sln,这就是xeve的Visual Studio项目工程文件。
五、编译libxeve
在xeve工程的build目录下创建xeve.def,并往该文件填入以下内容(其中函数列表来自inc\xeve.h定义的函数):
LIBRARY xeve
EXPORTS
xeve_create
xeve_delete
xeve_push
xeve_encode
xeve_config
xeve_param_default
xeve_param_ppt
xeve_param_check
xeve_param_parse
复制代码
打开Visual Studio 2022,在欢迎页面单击右侧的“打开项目或解决方案”,在弹出的文件对话框中选择xeve-0.5.1\build目录下的XEVE.sln。
打开xeve工程后,右击解决方案管理器的xeve_dynamic模块,右键菜单依次选择:属性→配置属性→链接器→输入,在窗口右侧的模块定义文件栏填写xeve.def的绝对路径。继续依次选择:配置属性→链接器→高级,在窗口右侧的导入库栏填写待生成xeve.lib的绝对路径。完成设置后,单击右下角的确定按钮,保存xeve.def和xeve.lib的路径配置。
依次选择顶部菜单:生成→配置管理器,在打开的配置管理器窗口上,找到左上角的“活动解决方案配置”下拉框,把Debug模式改为Release模式,再单击窗口右下角的关闭按钮。
依次选择顶部菜单:生成→生成→生成xeve_dynamic,Visual Studio就开始编译xeve_dynamic模块。编译过程可在Visual Studio界面下方观察,直到编译完成如下图所示。
此时可在xeve-0.5.1\build\src_main\Release目录下找到xeve.lib和xeve.dll,这两个文件就是编译生成的libxeve库文件。
六、安装libxeve
确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 Windows系统安装FFmpeg”的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装libxeve。
1、在msys64的/usr/local目录下新建libxeve目录,并在该目录下创建lib子目录;
2、把xeve工程中build\src_main\Release目录下的xeve.lib和xeve.dll复制到第一步创建的lib目录;
3、在lib目录下创建pkgconfig子目录,并把xeve工程的build\xeve.pc复制到pkgconfig目录;然后打开xeve.pc,把开头四行改成下面这样。
prefix=/usr/local/libxeve
exec_prefix=${prefix}/bin
libdir=${prefix}/lib
includedir=${prefix}/include
复制代码
4、在msys64的/usr/local/libxeve目录下创建include目录,然后把xeve工程中inc\xeve.h和build\xeve_exports.h复制到刚才创建的include目录;
经过以上步骤操作后的libxeve目录结构如下所示。
/usr/local/libxeve
|--------------- lib
| |----- xeve.lib
| |----- xeve.dll
| |----- pkgconfig
| |----- xeve.pc
|--------------- include
| |----- xeve.h
| |----- xeve_exports.h
复制代码
七、编译安装FFmpeg
先下载最新的FFmpeg源码(版本号需大于等于7.0),再把FFmpeg源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:
cd /usr/local/src
unzip ffmpeg-n7.1.1.zip
复制代码
确保MSYS环境已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第八章的“8.1.1 给FFmpeg集成x264”和“8.1.5 给FFmpeg集成x265”安装了H.264的编码器libx264和H.265的编码器libx265,也按照该书第十章的“10.1.1 FFmpeg集成SDL”安装了Windows系统的SDL2库,并且按照之前的文章安装了H.266的编码器libvvenc,然后执行下面命令配置FFmpeg的编译环境:
cd ffmpeg-n7.1.1
export PKG_CONFIG_PATH=/usr/local/libxevd/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-librist --enable-libdav1d --enable-libaom --enable-libsvtav1 --enable-libxevd --enable-libxeve --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
复制代码
配置完毕执行下面命令编译和安装FFmpeg,编译完成的ffmpeg库将会安装到configure指定的/usr/local/ffmpeg目录。
make
make install
cp /usr/local/libxevd/lib/xevd.dll /usr/local/ffmpeg/bin
cp /usr/local/libxeve/lib/xeve.dll /usr/local/ffmpeg/bin
复制代码
八、查看FFmpeg的安装结果
运行下面命令查看FFmpeg的安装版本:
ffmpeg -version
复制代码
上面命令返回的FFmpeg版本信息如下:
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-librist --enable-libdav1d --enable-libaom --enable-libsvtav1 --enable-libxevd --enable-libxeve --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
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-libxevd --enable-libxeve”,说明FFmpeg已经启用了MPEG-5 EVC视频编解码器libxevd和libxeve。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
梅克
9 小时前
关注
0
粉丝关注
9
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9986
背竽
9992
猷咎
9990
4
凶契帽
9990
5
里豳朝
9990
6
处匈跑
9990
7
黎瑞芝
9990
8
恐肩
9988
9
终秀敏
9988
10
杭环
9988
查看更多