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

相关推荐
kaixin_啊啊18 小时前
突破限制:Melody远程音频管理新体验
音视频
ai产品老杨19 小时前
解锁仓储智能调度、运输路径优化、数据实时追踪,全功能降本提效的智慧物流开源了
javascript·人工智能·开源·音视频·能源
MThinker19 小时前
02-Media-8-uvc_with_csc.py 使用硬件解码的USB摄像头(UVC)捕获视频并显示的程序
音视频·智能硬件·micropython·canmv·k230
向阳花开_miemie19 小时前
Android音频学习(十八)——混音流程
学习·音视频
清风6666661 天前
基于STM32的APP遥控视频水泵小车设计
stm32·单片机·mongodb·毕业设计·音视频·课程设计
Cary丿Xin1 天前
Luma 视频生成 API 对接说明
音视频
简鹿办公1 天前
FFmpeg vs 去水印软件:哪种方式更适合你?
ffmpeg·怎样去除视频水印·如何去视频logo视频水印
奔跑吧 android2 天前
【车载audio开发】【基础概念1】【音频基础概念通俗讲解】
音视频·channel·audio·aosp·frame·period_size
小狮子安度因2 天前
ffplay数据结构分析
数据结构·ffmpeg
小狮子安度因2 天前
ffplay音频重采样
ffmpeg·音视频