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:v]scale=1920:1080[logo];[0:v][logo]overlay=0:0" output.mp4

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

  1. 部分视频的画圈

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

ffmpeg -i input.mp4 -i mask.png -filter_complex "[1:v]scale=1920:1080[logo];[0:v][logo]overlay=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:v]scale=1920:1080[logo];[0:v][logo]overlay=0:0" -ss 00:01:00 -to 00:02:00 -c:v h264_nvenc -preset fast output.mp4

相关推荐
火山引擎边缘云41 分钟前
基于 DiT 大模型与字体级分割的视频字幕无痕擦除方案,助力短剧出海
音视频
欣赏你流浪^4 小时前
物联网智能感知进阶:基于YOLO的琏雾系统视频分析
物联网·yolo·音视频
m0_7471245314 小时前
视频输入输出模块介绍和示例
linux·音视频
Hello123网站1 天前
DreaMoving:基于扩散模型的可控视频生成框架
音视频·ai工具
逸俊晨晖1 天前
香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 推理视频
语言模型·音视频·rk3588·香橙派
音视频牛哥2 天前
低延迟RTSP|RTMP视频链路在AI驱动无人机与机器人操控中的架构实践与性能优化
音视频·大牛直播sdk·rtsp播放器·rtmp播放器·ai视频分析·智能机器人视觉系统·视频与ai协同
liwulin05062 天前
【JAVA】使用系统音频设置播放音频
java·python·音视频
2501_925435522 天前
AVS Video Converter视频转换与编辑工具深度评测
音视频
DogDaoDao2 天前
WebAssembly技术详解:从浏览器到云原生的高性能革命
云原生·音视频·编译·wasm·webassembly·流媒体·多媒体