ffmpeg 给视频画圆圈

ffmpeg本身可以给视频画方框,要画圈就麻烦一些,这里采用遮罩的方式实现视频画圈的功能。

  1. 准备遮罩

这里用opecv制作遮罩图像

cpp 复制代码
width=cap.get(cv::CAP_PROP_FRAME_WIDTH);
height=cap.get(cv::CAP_PROP_FRAME_HEIGHT);
cv::Mat mask = cv::Mat::zeros(cv::Size(width,height), CV_8UC4);  //
mask.setTo(cv::Scalar(0, 0, 0, 0));
cv::circle(mask, cv::Point(x,y), r, cv::Scalar(0,0,255,255),3);
cv::imwrite("mask.png",mask);

其中cap为目标视频,x,y,r分别对应圆圈的中心坐标和半径,cv::Scalar(0,0,255,255),这里表示使用后红色的圆圈。

遮罩图像保存为png格式,示例图像如下:

mask.png

  1. 应用遮罩

ffmpeg -i input.mp4 -i mask.png -filter_complex "1:vscale=1920:1080logo;0:vlogooverlay=0:0" output.mp4

上述命令中 input.mp4为输入的视频,output.mp4为输出视频,值得注意的是scale=1920:1080要求为视频的宽和高。

  1. 部分视频的画圈

如果只想给部分视频画圈,那么仅需加上时间段即可。

ffmpeg -i input.mp4 -i mask.png -filter_complex "1:vscale=1920:1080logo;0:vlogooverlay=0:0" -ss 00:01:00 -to 00:02:00 output.mp4

其中-ss 00:01:00为开始时间,-to 00:02:00为结束时间。

  1. 硬件加速

如果系统有显卡支持,还可以进行加速以节省时间。

ffmpeg -i input.mp4 -i mask.png -filter_complex "1:vscale=1920:1080logo;0:vlogooverlay=0:0" -ss 00:01:00 -to 00:02:00 -c:v h264_nvenc -preset fast output.mp4

相关推荐
MR.欻1 天前
ZLMediaKit 源码分析(四):RTP/RTCP 协议栈实现分析
c++·人工智能·vscode·ffmpeg·音视频
运维栈记1 天前
Remotion + Claude Code:用自然语言创作视频的革命性突破
人工智能·ai·音视频
晓py1 天前
音视频基础概念入门_FFmpeg学习笔记
学习·ffmpeg·音视频
ACP广源盛139246256731 天前
GSV2221@ACP# 高带宽低功耗显示转换芯片,赋能 TRAE SOLO 设备高清扩展升级
人工智能·嵌入式硬件·电脑·音视频
丷丩1 天前
MapLibre GL JS第30课:添加视频
javascript·音视频·gis·mapbox·maplibre gl js
JasonSJX1 天前
如何更好地保护视频内容免受盗版侵害
音视频·drm·视频加密·数字版权保护
“码”力全开1 天前
突破异构算力与协议围墙:基于 Docker 与边缘计算的 GB28181/RTSP 视频智能管理平台架构实践(附源码交付)
docker·音视频·边缘计算
daqinzl1 天前
Mpegts.js+FFmpeg+WebSocket+Node实时视频流实现方案
websocket·ffmpeg·node·mpegts.js
“码”力全开1 天前
基于 Docker 容器化与异构计算的工业级视频中台架构:GB28181/RTSP 双协议栈统一接入与源码交付深度解析
docker·架构·音视频
K姐研究社1 天前
LibTV团队版实测 – 多人协作重构 AI 视频生产模式
人工智能·aigc·音视频