C# 给视频添加水印
文章描述:以下主要还是使用到了ffmpeg命令,分别实现了给视频添加图片水印以及文字水印。
开发环境:.NET Framework版本:4.5
开发工具: Visual Studio 2013
实现代码:
public static void Run(string cmd){try{string ffmpeg = AppDomain.CurrentDomain.BaseDirectory + "ffmpeg.exe";ProcessStartInfo startInfo = new ProcessStartInfo(ffmpeg);startInfo.UseShellExecute = false;startInfo.CreateNoWindow = true;startInfo.WindowStyle = ProcessWindowStyle.Hidden;startInfo.Arguments = cmd;Process process = Process.Start(startInfo);process.WaitForExit(3000);process.Kill();}catch { }}/// <summary>/// 按时间获取某帧图片/// </summary>/// <param name="videoPath">视频路径</param>/// <param name="outPath">输出路径</param>/// <param name="frameTime">时间(格式:00:00:01)</param>public static void GetFrame(string videoPath, string outPath, string frameTime){Run(string.Format("-ss 00:00:01 -i {1} {2}", frameTime, videoPath, outPath));}/// <summary>/// 批量添加图片水印/// </summary>/// <param name="videoPath"></param>/// <param name="outPath"></param>/// <param name="listImg"></param>public static void AddImageMark(string videoPath, string outPath, List<ImgMark> listImg){string imgs = "", postions = "";foreach (ImgMark mark in listImg){imgs += " -i " + mark.ImgPath;postions += "overlay=" + mark.Postion.X + ":" + mark.Postion.Y+",";}postions = postions.Remove(postions.Length - 1);Run(string.Format("-i {0}{1} -filter_complex \"{2}\" {3}", videoPath, imgs, postions, outPath));}/// <summary>/// 添加文字水印/// </summary>/// <param name="videoPath">视频路径</param>/// <param name="outPath">输出路径</param>/// <param name="textMark">水印属性</param>public static void AddTextMark(string videoPath, string outPath, TextMark textMark){Run(string.Format(" -i {0} -vf \"drawtext=fontfile={1}: text='{2}':x={3}:y={4}:fontsize={5}:fontcolor={6}\" {7}", videoPath, textMark.FontFile, textMark.Text, textMark.X, textMark.Y, textMark.FontSize, textMark.FontColor.Name.ToLower(), outPath));//@"%{localtime\:%Y\-%m\-%d %H-%M-%S}"}
private void btn_select_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "视频|*.mp4;*.avi";ofd.Title = "请选择视频文件";ofd.InitialDirectory = Application.StartupPath;if (ofd.ShowDialog() == DialogResult.OK){axWindowsMediaPlayer1.URL = ofd.FileName;}}private void btn_text_Click(object sender, EventArgs e){if (!File.Exists(axWindowsMediaPlayer1.URL)){MessageBox.Show("未选择视频");return;}SaveFileDialog sfd = new SaveFileDialog();sfd.Filter = "视频|*.mp4";sfd.AddExtension = true;if (sfd.ShowDialog() == DialogResult.OK){TextMark mark = new TextMark{Text = "这里是水印",FontColor = Color.Red,FontFile = "simsun.ttc",FontSize = 100,X = 80,Y = 60};FFmpegUtil.AddTextMark(axWindowsMediaPlayer1.URL, sfd.FileName, mark);axWindowsMediaPlayer2.URL = sfd.FileName;}}private void btn_img_Click(object sender, EventArgs e){if (!File.Exists(axWindowsMediaPlayer1.URL)){MessageBox.Show("未选择视频");return;}SaveFileDialog sfd = new SaveFileDialog();sfd.Filter = "视频|*.mp4";sfd.AddExtension = true;if (sfd.ShowDialog() == DialogResult.OK){FFmpegUtil.AddImageMark(axWindowsMediaPlayer1.URL, sfd.FileName, new List<ImgMark>{new ImgMark {ImgPath=@"C:\Users\Zero\Desktop\a\\1.png", Postion=new Point(60,60)},new ImgMark {ImgPath=@"C:\Users\Zero\Desktop\a\\1.png", Postion=new Point(60,200)}});axWindowsMediaPlayer2.URL = sfd.FileName;}}
实现效果:
代码解析:着重介绍下添加文字水印的,由于很多时候我们需要添加的是中文,所以需要将字体包先放入到ffmepg的同级目录,然后指定该字体。
所有源代码均会上传并持续更新,如有需要
请关注公众号:
C# 给视频添加水印相关推荐
- Python 给视频添加水印
先上代码 from moviepy.editor import * clip = VideoFileClip("myvideo.mp4", audio=True) width,he ...
- FFmpeg 视频添加水印图片
最近学习FFmpeg编程开发,想写个视频添加水印图片的demo(未对音频或字幕进行处理),代码编写中遇见很多问题,在这里进行做一个笔记来,易于自己记忆和理解.期间在网上找demo,发现很多都是ffmp ...
- Adobe Premiere视频添加水印图片教程,小白一看就会!
最近在录制<微信小程序开发3天快速入门>和<微信小程序直播开发快速入门>的视频课程,就突发奇想:能否给视频加上标识水印呢?说干就干,对于视频编辑小白的我,只能网上搜索了. 首先 ...
- 如何给视频添加水印logo?
现在是自媒体的时代,不管你是个人还是团队,都可以在自媒体平台上传自己的视频,自媒体人每天信息苦苦创作的原创视频如果被别人盗用会造成很大的损失,为了防止这些事情的发生就需要在视频上添加自己的专属logo ...
- 使用狸窝全能视频转换器实现给视频添加水印
一.下载狸窝全能视频转换器<狸窝全能视频转换器>下载官网 或者在我这里提供的下载链接下载狸窝全能视频转换器V4.2.0.2 二.下载好后进行安装即可 三.打开软件给视频添加水印步骤 ①选择 ...
- Android拍摄照片、视频添加水印功能
最近项目中需要实现拍摄照片.视频添加水印的需求,在网上找了一圈都没找到特别好用的三方,于是自己借鉴其他库实现了一个拍摄照片及视频添加水印的功能,本项目中的水印均以图片的形式添加进去!!! 先看下效果图 ...
- ffmpeg 视频添加水印 logo
1.使用ffmpeg 视频添加水印(logo).在视频行业已经工作了两年多了,最近抽时间把一些处理视频的方法和经验写下来,一来做个记录,二来分享一下一起学习进步. ffmpeg -i D:\input ...
- 实用的3款视频添加水印软件分享,简单易上手
如今刷短视频已经成为许多小伙伴饭后闲暇之余消遣的项目,也有不少人因此加入了创作短视频的队列.但是在分享前,最好是对自己的作品加上水印.为什么呢?第一是可以起到更好的宣传作用,第二是防止他人盗窃作品内容 ...
- 如何快速批量给多个视频添加水印
短视频发展迅速,每个人或多或少都有自己的短视频账户,但是往往对外发我们视频作品的时候,不加水印容易被人盗用和转发.给视频添加水印一般都要使用软件,手机上的软件一般是单个视频或是小视频可以处理.要是视频 ...
- 怎样快速给多个视频添加水印?
如何快速给多个视频添加水印?在使用电脑的过程中不知道你有没有遇到过这种情况,就是给多个视频添加一个统一的水印,如果你还在采用视频编辑器一个一个视频的添加,那你就out了,这种方法虽然可以加水印,但是效 ...
最新文章
- angularjs和mysql_AngularJS SQL
- Javascript 数字时钟
- 2高并发服务器:多线程服务器
- python大型项目中的日志模块_Python中日志模块的使用
- Oracle创建表空间、用户、分配权限、导出、导入数据
- c语言中 a6,C语言中的32个关键字
- ORB_SLAM : semi dense code
- C语言libcurl:Uses the CURLINFO_TLS_SESSION data.
- ROS的学习(六)理解ROS的节点(NODE)
- mysql山西区位码_输入码、区位码、国标码与机内码关系简介【转载】
- vb程序设计编程科学计算机,Visual Basic程序设计教程:计算机类
- Android-APP内存优化
- 一篇关于批处理文件的经典文章
- 名企招聘面试考题集锦
- CAST 和 CONVERT
- 如何用js对url做urlencoding处理?
- left join和left outer join 有什么区别?这样解释通俗易懂
- 高等概率论 Chapter 6 Construction of a Probability Measure
- 时间序列分析深入总结(一)(附代码)
- [深度文]YoloX部署、优化、训练相关
热门文章
- 精华总结 |「跨越疫情之境,迈向新的征程」盘点一下2022年度我们开发团队对于云原生的技术体系的变革历程
- memoQ助力西门子全球员工宅家翻译
- 微信小程序实现点赞气泡效果
- 3. Linux系统启动分析-从start_kernel到init进程的启动
- STM32入门 - 芯片简介
- python 五位数数位
- 世界首套!我国时速600公里高速磁浮交通系统下线
- 树莓派3B+_Ubuntu Mate18.04_ROS Melodic(一):Ubuntu Mate的初始配置
- SAP小技巧之 建立你自己的SPRO
- 熊掌号php自动提交链接示例,WordPress熊掌号API自动提交接口