让视频会议性能起飞!基于 Ubuntu 24.04 + CUDA 13.0 的 FreeSWITCH 硬编硬解方案
还在为视频会议服务器 CPU 占用过高而烦恼吗?本项目通过 AI 辅助重构 mod_av 模块,完美适配 NVIDIA GPU 硬件加速。在单张 16G 显存显卡上,即可轻松支撑 30路 720p 高清视频流,彻底释放 CPU 压力!
💡 项目亮点
🔥 极致性能:利用 NVIDIA NVENC/NVDEC 技术,实现视频流的硬件编码与解码。
📊 高并发支持:实测 16G 显存 GPU 可稳定支持约 30 人 720p 视频会议,资源利用率极低。
🛠️ 极简部署:无需重新编译整个 FreeSWITCH,只需替换 mod_av/avcodec.c 文件即可生效。
🤖 AI 赋能:代码经过 AI 深度优化,适配最新硬件环境,兼容性更强。
🐧 环境现代:基于 Ubuntu 24.04 与 CUDA Toolkit 13.0 开发测试,面向未来。
📊 性能实测数据
在配备 16GB 显存 GPU 的服务器上,开启硬解后的表现如下:
表格
视频规格 支持路数 (预估) CPU 占用情况 备注
720p ~30 路 极低 流畅运行,无明显卡顿
1080p 视显存而定 低 适合小规模高清会议
⚙️ 环境依赖与验证
在开始之前,请确保你的服务器已安装 NVIDIA 驱动及支持硬件加速的 FFmpeg。
1. 系统环境
OS: Ubuntu 24.04
CUDA Toolkit: 13.0
FreeSWITCH 1.11.0: 需启用 mod_av 模块,自带的只支持硬编码,并且需要设置try_hardware_encoder 以及avcodec_find_encoder_by_name 的名字要和ffmpeg查询到的一致
2. 验证 FFmpeg 硬解支持
请运行以下命令,确保输出中包含 cuvid 或 nvdec 相关解码器:
ffmpeg -hide_banner -decoders | grep -E "cuvid|nvdec|cuda"
V..... av1_cuvid Nvidia CUVID AV1 decoder (codec av1)
V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264)
V..... hevc_cuvid Nvidia CUVID HEVC decoder (codec hevc)
V..... mjpeg_cuvid Nvidia CUVID MJPEG decoder (codec mjpeg)
# ... 其他解码器
ffmpeg -hide_banner -encoders | grep -E "nvenc"
V....D av1_nvenc NVIDIA NVENC av1 encoder (codec av1)
V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
V....D hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)
🚀 快速开始
部署过程非常简单,无需复杂的编译流程。
备份原文件:
找到你 FreeSWITCH 源码或安装目录下的 mod_av 模块源文件。
替换核心文件:
将本项目中的 avcodec.c 下载并替换原有文件。
重新编译模块 (如果适用):
进入 mod_av 目录重新编译该模块,或直接替换编译后的 .so 文件(视具体环境而定)。
重启 FreeSWITCH:
重启服务以加载新的硬件加速模块。
✅ 成功日志验证
启动 FreeSWITCH 后,观察日志输出。如果看到以下信息,说明硬件加速已成功启用:
[NOTICE] avcodec.c:1226 NVENC HW CODEC ENABLED
[NOTICE] avcodec.c:1448 CUDA HW DECODER ENABLED
[NOTICE] avcodec.c:1473 codec: id=27 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
前后内存及gpu 2路视频对比


代码地址:

40

被折叠的 条评论
为什么被折叠?



