广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现文字视频生成器的示例代码
  • 933
分享到

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

2024-04-02 19:04:59 933人浏览 泡泡鱼
摘要

目录前言实现功能开发环境实现代码实现效果前言 简单的描述下写这个软件的背景吧。之前短视频平台很火的时候,相信很多人都想进去分一杯羹,俺当然也不能免俗,但是人丑家穷又没才艺,咋办呢?看

前言

简单的描述下写这个软件的背景吧。之前短视频平台很火的时候,相信很多人都想进去分一杯羹,俺当然也不能免俗,但是人丑家穷又没才艺,咋办呢?看到别人有只发文字啥的一些视频加点背景音乐也能看,想着,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#文字视频生成器的资料请关注编程网其它相关文章!

--结束END--

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

本文链接: https://www.lsjlt.com/news/168993.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#实现文字视频生成器的示例代码
    目录前言实现功能开发环境实现代码实现效果前言 简单的描述下写这个软件的背景吧。之前短视频平台很火的时候,相信很多人都想进去分一杯羹,俺当然也不能免俗,但是人丑家穷又没才艺,咋办呢?看...
    99+
    2022-11-13
  • Python生成字符视频的实现示例
    一、前言 在之前也写过生成字符视频的文章,但是使用的是命令行窗口输出,效果不是很好,而且存在卡顿的情况。于是我打算直接生成一个mp4的字符视频。大致思路和之前一样:Python20行代码实现视频字符化。 下面来看一个...
    99+
    2022-06-02
    Python生成字符视频 Python 字符视频
  • C++利用GPAC实现生成MP4文件的示例代码
    目录一、MP4Writer类二、写h264流数据为mp4文件步骤三、写h265流数据为mp4文件步骤四、利用命令行生成mp4文件GPAC主要针对学生和内容创作者,代表了一个跨平台的多...
    99+
    2023-02-06
    C++ GPAC生成MP4文件 C++生成MP4文件 C++ GPAC MP4
  • java 生成文字图片的示例代码
    本文主要介绍了java 生成文字图片的示例代码,分享给大家,具体如下:import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java...
    99+
    2023-05-31
    java 生成文字图片 ava
  • node文字生成图片的示例代码
    今天老板提了需求,要在服务端生成邀请卡,嗯…,简单的说就是把要这张: 变成差多这样的: 后端搞ruby的哥们搞了个html转图片,说转得太慢了,我就把这坑接下来了 所以睡前就倒腾了下,搞了个简...
    99+
    2022-06-04
    示例 文字 代码
  • C#实现封面图片生成器的示例代码
    目录实现功能开发环境实现代码实现效果这个东西我已经用了有段时间了,从开始写文章就在用这个,主要原因还是因为我比较懒。懒得去寻找图片,同时又怕万一惹来版权争议。。。 跟我所有的文章的...
    99+
    2022-11-13
  • Python实现视频下载与合成的示例代码
    目录模块使用开发环境案例实现1.明确需求2.代码实现步骤实现代码模块使用 requests >>> pip install requests (数据请求 第三方模块...
    99+
    2022-11-10
  • NodeJS实现视频转码的示例代码
    视频转码就是一个先解码,再编码的过程,从而将原来的视频转换成我们需要的视频。这种转换可能包括各式(mp4/avi/flv等)、分辨率、码率、帧率等。 传统的视频转码中,很常用的工具是FFmpeg。FFmp...
    99+
    2022-06-04
    示例 代码 视频
  • Python实现视频裁剪的示例代码
    目录前言环境依赖代码验证一下前言 本文提供将视频按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义。 环境依赖 ffmpeg环境安装,可以参考文章:windows ffmpeg安装...
    99+
    2022-11-13
  • python实现自动生成C++代码的代码生成器
    遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错;而借用python的代码自动生成,可以轻松搞定...
    99+
    2022-11-11
  • Python实现视频自动打码的示例代码
    目录序言准备工作实现原理模块素材工具代码解析完整代码序言 我们在观看视频的时候,有时候会出现一些奇怪的马赛克,影响我们的观影体验,那么这些马赛克是如何精确的加上去的呢? 本次我们就...
    99+
    2022-11-10
  • Java如何实现长图文生成的示例代码
    很久很久以前,就觉得微博的长图文实现得非常有意思,将排版直接以最终的图片输出,收藏查看分享都很方便,现在则自己动手实现一个简单版本的目标首先定义下我们预期达到的目标:根据文字 + 图片生成长图文目标拆解 支持大段文字生成图片 支持插入图...
    99+
    2023-05-31
    java 长图文 ava
  • PHP实现生成二维码的示例代码
    目录前言1、目前有2种类型的二维码2、用户扫描带场景值二维码时,可能推送以下两种事件3、创建二维码ticket4、临时二维码请求说明5、永久二维码请求说明6、临时二维码和永久二维码生...
    99+
    2022-11-13
  • vue实现监控视频直播的示例代码
    要想使用videojs我们势必是需要安装videojs的, 而且在生产环境中我们也需要依赖它, 所以如下 npm:  npm install video.js -S npm inst...
    99+
    2022-11-13
  • Android视频悬浮窗口实现的示例代码
    前言 本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回 APP 页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: 悬浮窗口.gif...
    99+
    2022-06-06
    悬浮窗口 示例 Android
  • Python实现视频画质增强的示例代码
    目录前言原理实现步骤拆分处理合成效果总结前言 前面通过文章 几行代码,实现Python捕获、播放和保存摄像头视频!给大家介绍了如何读取、播放和保存视频,后面又通过文章&nb...
    99+
    2022-11-10
  • python怎么实现自动生成C++代码的代码生成器
    这篇文章主要讲解了“python怎么实现自动生成C++代码的代码生成器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么实现自动生成C++代码的代码生成器”吧!遇到的问题工作中遇...
    99+
    2023-07-02
  • Python实现C#代码生成器应用服务于Unity示例解析
    目录开发目标:实现小红帽所挂脚本的自动生成下图为生成的最终目标主程序具体python代码如下:所设置的TMPL文件如下:自动生成的c#代码展示如下:开发目标:实现小红帽所挂脚本的自动...
    99+
    2022-11-12
  • tk.mybatis实现uuid主键生成的示例代码
    引入依赖 <dependency> <groupId>tk.mybatis</groupId> ...
    99+
    2022-11-12
  • PHP实现腾讯云视频加密的示例代码
    目录前言实现加密1、打开腾讯云视频开启key防盗链2、导入csv文件到数据库3、加密前言 上传到腾讯云上面的视频,如何实现防盗链? 当我们的视频放到,腾讯云上面,播放的时候如何实现指...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作