C#实现文字视频生成器的示例代码

目录
  • 前言
  • 实现功能
  • 开发环境
  • 实现代码
  • 实现效果

前言

简单的描述下写这个软件的背景吧。之前短视频平台很火的时候,相信很多人都想进去分一杯羹,俺当然也不能免俗,但是人丑家穷又没才艺,咋办呢?看到别人有只发文字啥的一些视频加点背景音乐也能看,想着,Wo Cao?,这我也行啊, I Can I Up。但是让我天天去找素材剪辑视频啥的,那肯定干不来,毕竟程序员是需要加班的,所以,这个粗糙的程序就诞生了,当然我也没怎么用,发了两篇觉得不好玩。就没再玩了。

后来通过种种途径吧,才知道短视频背后的产业相当复杂,一个视频能不能火基本不在于视频本身。

这个软件主要是基于录屏功能来实现的,不过是一键式的罢了,当然实现录屏我们用了第三方的插件:AForge。项目需要的DLL如下图:

实现功能

利用录屏功能录制语句的生成过程,并保存成视频格式

开发环境

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码

  public class RecordingUtil
    {
        VideoFileWriter vfWriter = new VideoFileWriter();
        ScreenCaptureStream scStream = null;

        readonly Rectangle Rect;
        public RecordingUtil(Rectangle rect, int interval = 40)
        {
            Rect = rect;
            scStream = new ScreenCaptureStream(rect, interval);
            scStream.NewFrame += (s, e1) =>
            {
                vfWriter.WriteVideoFrame(e1.Frame);
            };
        }

        public void Start(string savePath, int Rate = 4000 * 1024)
        {
            vfWriter.Open(savePath, Rect.Width, Rect.Height, 25, VideoCodec.MPEG4, 4000 * 1024);
            scStream.Start();
        }

        public void Stop()
        {
            if (scStream != null && scStream.IsRunning)
            {
                scStream.Stop();
            }
            if (vfWriter.IsOpen)
            {
                vfWriter.Close();
            }
        }

    }
 private void btnCreate_Click(object sender, EventArgs e)
        {

            checkNull();
            btnCreate.Text = "正在生成";
            btnCreate.Enabled = false;
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "视频文件|*.MP4";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                Point point = new Point(this.Location.X + 5, this.Location.Y + 25);
                Size size = new Size(splitContainer1.Panel1.Width % 2 == 1 ? splitContainer1.Panel1.Width - 1 : splitContainer1.Panel1.Width, splitContainer1.Panel1.Height % 2 == 1 ? splitContainer1.Panel1.Height - 1 : splitContainer1.Panel1.Height);

                Rectangle rect = new Rectangle(point, size);
                RecordingUtil Recording = new RecordingUtil(rect);
                Recording.Start(sfd.FileName);
                createText(txtWord.Text);
                Recording.Stop();
            }
            btnCreate.Text = "生 成";
            btnCreate.Enabled = true;

        }

        private void btnPreview_Click(object sender, EventArgs e)
        {

            checkNull();
            btnPreview.Text = "正在预览";
            btnPreview.Enabled = false;
            createText(txtWord.Text);
            btnPreview.Text = "预 览";
            btnPreview.Enabled = true;
        }

        private void checkNull()
        {
            if (string.IsNullOrWhiteSpace(txtWord.Text))
            {
                toolTip1.Hide(txtWord);
                toolTip1.Show("不可为空!", txtWord, 5, -60, 2000);
                return;
            }
        }

        private void createText(string text)
        {
            Graphics g = splitContainer1.Panel1.CreateGraphics();
            g.Clear(splitContainer1.Panel1.BackColor);
            Font font = new Font("华文行楷", 25);
            // Brush whiteBrush = new SolidBrush(Color.FromArgb(0, 192, 0));
            Brush whiteBrush = new SolidBrush(Color.Black);
            int x = 0, y = 0;
            string[] arr = txtWord.Text.Split('\n');
            for (int i = 0; i < arr.Length; i++)
            {
                x = 40 * i + 15;
                for (int j = 0; j < arr[i].Length; j++)
                {
                    y = 40 * j + 15;
                    g.DrawString(arr[i][j].ToString(), font, whiteBrush, x, y);
                    Delay(300);
                }
            }
        }

        private void Delay(double mm)
        {
            DateTime now = DateTime.Now;
            while (DateTime.Now.AddMilliseconds(-mm) <= now)
            {
                Application.DoEvents();
            }
        }

实现效果

以上就是C#实现文字视频生成器的示例代码的详细内容,更多关于C#文字视频生成器的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#实现在底图上动态生成文字和图片

    本文主要记录在图片上动态的生成需要添加的文字和把指定的图片加到底图上,直接上代码 /// <summary> /// 在底图上画指定路径的图片 /// </summary> /// <param name="g">画板实例</param> /// <param name="path">图片路径</param> /// <param name="totalWidth"&g

  • C#实现封面图片生成器的示例代码

    目录 实现功能 开发环境 实现代码 实现效果 这个东西我已经用了有段时间了,从开始写文章就在用这个,主要原因还是因为我比较懒.懒得去寻找图片,同时又怕万一惹来版权争议... 跟我所有的文章的封面图一样,一个纯色背景加上文字自动生成一个指定大小的图片. 代码实现也比较简单,如果有兴趣的话,可以自己扩展,比如自定义背景图,自定义水印等. 实现功能 利用C#做一个简单的封面图片生成器 开发环境 开发工具: Visual Studio 2013 .NET Framework版本:4.5 实现代码 pri

  • C# Guid长度雪花简单生成器的示例代码

    标准的long雪花长度为64bit,还要浪费1bit,然后41位时间,10位workid,12位序列 guid长度128位,64位完整的时间tick,32位workid,32位序列,可谓随便用满非常豪华 也就是系统里可以根据需要有的地方存随机guid,有的地方存雪花guid,随便换 随后还有提取时间的方法,由于是64位完整时间,直接拿出来转时间就好了 这个类参考别人的代码,如果需要设计更完善的guid雪花,可以在github上或者nuget上找newid这个项目,老外写好的更完善的做法 publ

  • C#生成Word文件(图片、文字)

    本文实例为大家分享了C#生成Word文件的具体代码,供大家参考,具体内容如下 通过Microsoft.Office.Interop.Word生成Word文档 1.引用类 WordReport.cs,代码如下: using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Word; using MSWord = Microsoft.Office.Interop.W

  • c# 如何实现代码生成器

    做了2,3年的java-web,始终木有逃离所谓基础业务,增删改查这些一成不变的东西写起来浪费大量时间,于是做了个简单的代码生成器快速生成 代码生成器的原理其实很简单,都是基于模板实现替换,模板基于是Nvelocity. 部分代码展示:[目前只支持mysql .oracle.sqlite 三种数据库的连接 有需要 可以自己增加] sing System; using System.Collections.Generic; using System.Data; using System.Linq;

  • android 仿QQ动态背景、视频背景的示例代码

    本文介绍了android 仿QQ动态背景.视频背景的示例代码,分享给大家,具体如下: 效果如下: 如上图类似效果图: 1, 自定义视频类 继承VideoView public class CustomVideoView extends VideoView { public CustomVideoView(Context context) { super(context); } public CustomVideoView(Context context, AttributeSet attrs)

  • ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码

    安装 官网下载 http://ffmpeg.org/ 选择需要的版本 在这个网址下载ffmpeg,https://github.com/BtbN/FFmpeg-Builds/releases 将解压后得到的以下几个文件放置在E:\FFmpeg下 环境变量 此电脑--属性--高级系统设置--环境变量 在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填写 再将%FFMPEG_HOME%以及%FFMPEG_HOME%\bin写入系统变量的Path中 然后一路确定即可 验证 win+R,cmd

  • Python实现视频裁剪的示例代码

    目录 前言 环境依赖 代码 验证一下 前言 本文提供将视频按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义. 环境依赖 ffmpeg环境安装,可以参考文章:windows ffmpeg安装部署 本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中. ffmpy安装: pip install ffmpy -i https://pypi.douban.com/simple 代码 不废话,上代码. #!/user/bin/env python # coding=utf

  • JavaScript实现网页视频添加水印的示例代码

    目录 示例图 原理 代码示例 示例图 原理 通过html的页面布局,在video播放器层面,通过js控制dom,插入文本水印代码. 代码示例 index.html <!DOCTYPE html> <html> <head> <meta name="renderer" content="webkit" /> <meta http-equiv="Content-Type" content=&quo

  • PHP实现腾讯云视频加密的示例代码

    目录 前言 实现加密 1.打开腾讯云视频开启key防盗链 2.导入csv文件到数据库 3.加密 前言 上传到腾讯云上面的视频,如何实现防盗链? 当我们的视频放到,腾讯云上面,播放的时候如何实现指定过期时间,防止他人盗刷流量,这就要用到,腾讯云key防盗链技术,这个技术有什么用呢? 视频 URL 中指定过期时间,他人获取后无法长期使用 在视频 URL 中指定最大允许播放 IP 数,他人获取后不能无限制地分发给更多人观看 CDN 节点检查视频 URL 中的参数和签名,对视频播放请求进行控制.如果请求

  • C#实现自定义打印文字和图片的示例代码

    目录 1.调用打印机设置 2.关联文档 3.绘制内容 C#中打印其实就是自己绘图+调用系统打印函数,于是便有了以下操作 1.调用打印机设置 如果你想在打印前设置打印机属性(或者切换打印机),请务必添加这段代码,否则电脑会直接按照预设的设置进行打印(打印机都没法选) //打印机设置 PrintDialog printDialog = new PrintDialog(); printDialog.Document = ptDoc; printDialog.ShowDialog(); ptDoc就是打

  • react-pdf 打造在线简历生成器的示例代码

    目录 前言 React-PDF简介 程序实现 初始化项目 实现逻辑 遇到问题 重构 部署 参考 前言 PDF 格式是30年前开发的文件格式,并且是使用最广泛的文件格式之一,我们最喜欢使用它作为简历.合同.发票.电子书等文件的格式,最主要的原因是文档格式可以兼容多种设备和应用程序,而且内容 100%保持相同的格式. React-PDF 简介 React PDF 是一个使用 React 创建 PDF 文件的工具,支持在浏览器.移动设备和服务器上创建PDF文件. 可以用它们轻松地将内容呈现到文档中,我

  • vue实现监控视频直播的示例代码

    要想使用videojs我们势必是需要安装videojs的, 而且在生产环境中我们也需要依赖它, 所以如下 npm:  npm install video.js -S npm install videojs-flash videojs-contrib-hls -S 我们打开Vue工程中的主入口main.js进行引入 // 引入videojs import Video from 'video.js'; import 'video.js/dist/video-js.css'; Vue.prototyp

随机推荐