You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg VAAPI硬件编解码插入drawbox滤镜失败求助

解决方案

问题根因

drawbox没有对应的VAAPI硬件滤镜,FFmpeg会自动把硬件帧转成CPU能处理的格式(比如yuv420p),处理完再转回去,但你用的hwmap参数配置导致转回VAAPI帧时内存映射失败。另外J5005的UHD Graphics 600对VAAPI的格式和内存映射规则要求很严格。

修正后的命令

改用hwdownload/hwupload明确处理CPU和GPU帧的转换,同时简化滤镜链,避免自动插入的格式转换冲突:

ffmpeg -hide_banner -v error -allowed_media_types video -loglevel verbose -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128 \
  -i rtsp://... -c:v h264_vaapi -g 50 -bf 0 -profile:v high -level:v 4.1 -sei:v 0 -an \
  -filter_complex "[0:v]scale_vaapi,hwdownload,format=yuv420p[in];\
    [in]drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill[in2];\
    [in2]hwupload,format=vaapi[out]" -map "[out]" \
  -c:v h264_vaapi -an -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp rtsp://...

关键调整说明

  1. hwdownload转CPU帧:把VAAPI硬件帧下载到系统内存,转成yuv420p(drawbox原生支持的格式),避免FFmpeg自动插入不可控的格式转换滤镜。
  2. hwupload转回硬件帧:drawbox处理完后重新把帧上传到iGPU,转回VAAPI格式供后续硬编码用。
  3. 去掉多余的hwmap和格式强制:J5005的共享内存虽然支持hwmap,但涉及CPU滤镜时,hwdownload/hwupload的兼容性更稳定,不会出现内存映射失败的问题。

额外优化建议

如果担心CPU占用上升,建议用FFmpeg 4.4以上版本,这个版本对VAAPI的CPU-GPU帧转换优化更好。另外J5005的CPU处理1080P级别的drawbox操作,占用一般在10%-15%左右,不会影响系统稳定性。


内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:58:10