- 文档首页
云服务器
云服务器ECS
最佳实践
自助建站
AIGC实践
基于g4i实例部署Intel iVTAL动态库提升FFmpeg解码、转码性能
AIGC实践
基于g4i实例部署Intel iVTAL动态库提升FFmpeg解码、转码性能
基于g4i实例部署Intel iVTAL动态库提升FFmpeg解码、转码性能
本文主要介绍如何在ecs.g4i规格的实例中部署Intel iVTAL动态库,并安装支持Intel iVTAL库和OpenVINO优化的FFmpeg,提升FFmpeg解码、转码效率。
FFmpeg是一款能够解码、编码、转码、复用(封装)、解复用、流式传输、过滤和播放几乎所有的音视频内容的多媒体框架。FFmpeg通常在流媒体处理链路中承担“积木”的角色,将其采集/拉流、解复用、解码等功能加上编排控制(转码任务编排、错误处理与重试)作为“积木”按需拼接,您就可以得到适用于直播转码、点播转码、ABR自适应码率打包、内容审核/特效滤镜及视频AI推理前处理等常见场景的流媒体处理功能。了解更多。 典型处理流程包括:
- 输入与采集:从文件、HTTP(S)、RTMP/RTSP、SRT、WebRTC等拉取,或本地采集卡/摄像头读取。
进入服务后,通常由libavformat进行协议处理与缓存。
- 解复用(Demux):将容器(MP4/FLV/TS等)拆成独立的音视频/数据流。
该步骤多为I/O绑定,对CPU压力较小,但对内存带宽和拷贝次数敏感。
- 解码(Decode):将压缩码流(H.264/H.265/AV1/VP9等)还原为像素帧(YUV/RGB)。
该步骤是计算密集阶段,且产生大量像素数据(几十到数百MB/s),会占用大量内存带宽。
- 预/后处理(Scale/Colorspace/Filters):缩放、裁剪、色彩空间变换、去噪、锐化、字幕/水印叠加、AI前处理。
该步骤部分算子会受到内存带宽限制(例如缩放、colorspace),部分算子会受到算力限制(例如复杂滤镜、DNN)。
该步骤在典型处理流程(例如运动估计、模式决策)中是计算密集阶段,同时会大量读/写内存。
- 复用(Mux)与输出:将数据打包到容器、写文件或推流(HLS/DASH分片、RTMP/SRT/WebRTC等)。
该步骤多为I/O绑定,需注意避免过多的内存拷贝。
- 编排与控制:队列管理、失败重试、ABR多档并行、任务拆分与合并。
Intel Video Transcode Acceleration Library(iVTAL)针对FFmpeg引入运动信息复用(MV Reuse)与解码QP引导(JND Decode QP)等策略,通过在解码阶段收集运动/QP等帧级/宏块级信息,并将其以结构化元数据随帧一路下传到编码器,使编码端跳过部分最耗时的搜索与估计,达到降低 CPU、提高吞吐/降低时延的目的。
说明
考虑到在云服务器实例(ECS)中直接从公共仓库下载相关软件包速度较慢,火山引擎已将预先集成所需补丁(Patch)的x264、x265编码库及FFmpeg上传至TOS(对象存储)中,方便您快速下载使用。
- 执行如下命令,配置环境变量并下载依赖库与测试视频。
- 执行如下命令,下载并编译支持iVTAL优化的x264视频编码库。
- 执行如下命令,下载并编译支持iVTAL优化的x265视频编码库。
- 执行如下命令,编译集成Intel iVTAL库优化的FFmpeg版本。
- 执行如下命令,通过环境变量设置系统动态库搜索路径。
- 执行如下命令,将测试视频Sony_4K_Camp.mp4转码为H.264(CRF=22)编码格式的out.mp4。
- 回显如下所示时,表示已成功转码,您还可以通过ffprobe out.mp4命令查看转码后的视频码率、分辨率及编码方式等信息。
-
- 执行如下命令,将测试视频wall.mp4转码为H.265(CRF=28)编码格式的out.mp4,存放在当前目录下。
- 回显如下所示时,表示已成功转码,您还可以通过ffprobe out.mp4命令查看转码后的视频码率、分辨率及编码方式等信息。
-
- 执行如下命令,下载并解压OpenVINO安装包。
- 执行如下命令,编译并安装支持Intel iVTAL库和OpenVINO优化的FFmpeg版本。
- 执行如下命令,验证结合iVTAL与OpenVINO实现“低分辨率缩放 + 深度学习超分”的视频预处理功能是否可以正常使用。
- 回显如下所示时,表示已成功进行视频预处理,您还可以通过ffprobe espcn.mp4命令查看预处理后的视频码率、分辨率及编码方式等信息。
-
- 执行如下命令,验证视频解码抽帧功能是否可以正常使用。
-
本节展示了在ecs.g4i.4xlarge规格实例中,通过Intel iVTAL动态库加速FFmpeg解码抽帧、转码前后性能数据。
下表展示了将测试进程限制在单个CPU核心上运行时,FFmpeg对H.264编码的视频进行解码抽帧操作时,启用Intel iVTAL动态库加速前后在不同抽帧间隔下抽取1帧图像的耗时(秒)。
下表展示了在超线程核心数为16HT时,FFmpeg对不同源视频进行H.264、H.265转码时,启用Intel iVTAL动态库加速前后每秒转码的帧率(FPS)。
开启Intel iVTAL动态库加速后,解码抽帧操作最高可获得约 70% 的性能提升;转码操作最高可获得约 53% 的性能提升。同时,Intel提供的新一代硬件AI加速指令AMX可以大幅提升图像超分辨率(SR)预处理流程的性能,使您的SR模型能够在更广泛的设备上高效运行。
因此,在追求性价比、丰富实例资源场景下,推荐您使用搭载第六代英特尔® 至强® 可扩展处理器(Granite Rapids)的实例规格(例如通用型g4i)代替GPU实例,通过Intel iVTAL动态库与系统级加速方案,获取最优性价比的视频数据处理服务。
最近更新时间:2025.12.17 14:26:54