vs实现ffmpeg 添加视频水印
1.下载ffmpeg.exe使用
链接: ffmpeg官网地址
2.字库所在路径
ffmpeg添加中文水印需要用到中文字库文件
电脑自带 C:\Windows\Fonts
3.代码调用
功能一,添加中文水印 videowm()
功能二,添加图片水印 Imagewm()
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
#define _MAX_DRIVE 50
//添加文字水印 ffmpeg路径设置绝对路径或者配置环境变量
//参数1 视频路径 参数2 水印文件txt或者字符串()
//simsun.ttc(相对路径) 字体文件(程序运行目录) alpha 透明度 fontsize 字体大小
void videowm(const char* filepath,const char* watermark)
{
char video_date[512];
//生成路径
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath( filepath, drive, dir, fname, ext );
char createfile[512];
memset(createfile, 0, sizeof(createfile));
sprintf(createfile,"%s%s%s%s%s",drive,dir,fname,"mk",ext);
int i = 0;
while(1)
{
FILE *fp;
if((fp=fopen(createfile,"r"))!=NULL)
{
fclose(fp);
i++;
memset(createfile, 0, sizeof(createfile));
sprintf(createfile,"%s%s%s%s%d%s",drive,dir,fname,"mk_",i,ext);//生成的文件名,防止重复
}
else
{
break;
}
}
//txt文本判断
_splitpath( watermark, drive, dir, fname, ext );
if(strstr(ext,".txt"))
{
sprintf(video_date,"ffmpeg -i %s -vf \"drawtext=fontsize=20:fontfile=./simsun.ttc:textfile=%s:x=20:y=20:fontcolor=blue:alpha=0.5\" %s",filepath,watermark,createfile);
system(video_date);
}
else
{
sprintf(video_date,"ffmpeg -i %s -vf drawtext=fontsize=20:fontfile=./simsun.ttc:text=%s:x=20:y=20:fontcolor=blue:alpha=0.5 %s",filepath,watermark,createfile);
system(video_date);
}
}
//添加图片水印
//参数1 视频路径 参数2 水印图片
//lut=a=val 透明度
void Imagewm(const char* filepath,const char* Imagemark)
{
char Image_data[512];
//生成路径
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath( filepath, drive, dir, fname, ext );
char createfile[512];
memset(createfile, 0, sizeof(createfile));
sprintf(createfile,"%s%s%s%s%s",drive,dir,fname,"mk",ext);
int i = 0;
while(1)
{
FILE *fp;
if((fp=fopen(createfile,"r"))!=NULL)
{
fclose(fp);
memset(createfile, 0, sizeof(createfile));
i++;
sprintf(createfile,"%s%s%s%s%d%s",drive,dir,fname,"mk_",i,ext);//生成的文件名,防止重复
}
else
{
break;
}
}
sprintf(Image_data,"ffmpeg -i %s -vf \"movie=%s, scale=50:50, lut=a=val*0.5[watermark];[in][watermark] overlay=10:10[out]\" %s",filepath,Imagemark,createfile);
system(Image_data);
}
int main()
{
string filepath = "C://Users//123456//Desktop//12//1.mp4";//视频路径
//水印文件路径为程序运行的相对路径
//string watermark = "./12//1.png";
string watermark = "./12//1.txt";
//文字水印 也可以传字符串
videowm(filepath.c_str(),watermark.c_str());
//图片水印
//Imagewm(filepath.c_str(),watermark.c_str());
return 0;
}