核心区别对比
维度 CPU 推流 GPU 推流 CPU 推理 GPU 推理
计算单元 CPU 核心 GPU 硬件编码器 CPU 核心 GPU CUDA/MUSA 核心
视频编码 软件编码(如 libx264) 硬件编码(如 h264_mtenc) 神经网络计算 神经网络计算
CPU 占用 🔴 很高(80-100%) 🟢 很低(5-15%) 🔴 很高 🟢 很低
速度 🟡 一般(依赖 CPU 性能) 🟢 快(专用硬件) 🟡 一般 🟢 快(并行计算)
画质/精度 🟢 好(软件可精细调优) 🟡 略差(硬件固定算法) 🟢 高(FP32/FP64) 🟡 可能略低(FP16/INT8)
延迟 🟡 中等 🟢 低(实时性好) 🟡 中等 🟢 低
资源竞争 与业务争抢 CPU 独立 GPU 编码器 与推流争抢 CPU 独立 GPU 核心
- CPU 推流(软件编码)
bash
使用 CPU 软件编码
ffmpeg -i input.mp4 -c:v libx264 output.mp4
工作原理:CPU 执行 H.264 压缩算法,逐帧分析、运动估计、熵编码
优点:画质好、参数可调、兼容性高
缺点:CPU 占用极高,可能影响其他任务
适用场景:离线转码、对画质要求高的场景
- GPU 推流(硬件编码)
bash
使用 NVIDIA NVENC / Intel QSV / 摩尔线程 h264_mtenc
ffmpeg -i input.mp4 -c:v h264_nvenc output.mp4
工作原理:GPU 内部有专门的编码电路(ASIC),独立于 GPU 计算核心
优点:CPU 占用低、速度快、延迟低
缺点:画质略差(同等码率下)、参数受限
适用场景:实时推流、直播、视频会议
重要补充:GPU 编码器 vs GPU 推理的区别
虽然原理相似,但有个重要区别:
GPU 编码器(推流)是独立的硬件单元,不占用 GPU 的 CUDA/MUSA 核心
例如:用同一张 GPU ,可以同时进行 GPU 推流 + GPU 推理,互不影响
视频编码(占用 NVENC/MTENC 编码器)
模型推理(占用 CUDA/MUSA 核心)
一段视频转视频流,再推理
用第一个命令持续地循环推视频
ffmpeg -re -stream_loop -1 -i /home/aiuav/ddd/software/20260303150310_0003_V_static.mp4 -c:v h264_mtenc -b:v 2000k -g 25 -pix_fmt yuv420p -f flv rtmp://172.16.10.7:1111/live/8UUXP1400A0YX2-99-0-0-ai-test
再用已推的流持续测试,
原理架构:
视频文件 → FFmpeg循环推流 → RTMP服务器(流A) → AI程序拉流分析 → RTMP服务器(流B) → 播放器
(无限循环) rtmp://.../live/stream rtmp://.../live/stream1
优点
✅ 视频循环播放:FFmpeg 独立负责循环推流
✅ AI 专注分析:程序只做推理,不需要处理循环逻辑
✅ 稳定可靠:即使 AI 程序重启,视频源不受影响
✅ 解耦设计:推流和分析可以独立扩展
✅ RTMP 协议:统一使用 RTMP,兼容性好