c# --屏幕录制

原文 http://hi.baidu.com/wcsjsdn/item/b2af6de7fefa8a334ddcafb9

看界面:

这 个主要是利用微软提供的库文件实现。(首先要在本机上安装解码器:WMEncoder_cn.exe。注:这个是xp系统的解码器,如有需要,可以下载安 装window7的解码器 ),然后添加引用:Interop.WMEncoderLib.dll,在项目中添加命名空间:using WMEncoderLib;

这也没什么好说的,直接贴上代码:

首先定义一个WMEncoderManage类

public class WMEncoderManage
    {
        private static WMEncoder _encoder = null;
        public static WMEncoder GetWMEncoder
        {
            get
            {
                if (_encoder == null)
                {
                    _encoder = new WMEncoder();
                }

                return _encoder;
            }
        }

        private static string _defaultFormat = "屏幕视频/音频 - 高(CBR)";
        public static string DefaultFormat
        {
            get
            {
                return _defaultFormat;
            }

            set { _defaultFormat = value; }
        }
    }

然后下面开始:

/// <summary>
        /// 视频录制方法
        /// </summary>
        private void Coder()
        {
            try
            {
                WMEncoder Encoder = WMEncoderManage.GetWMEncoder;
                IWMEncSourceGroup SrcGrp;
                IWMEncSourceGroupCollection SrcGrpColl;
                SrcGrpColl = Encoder.SourceGroupCollection;
                SrcGrp = SrcGrpColl.Add("SG_1");

                IWMEncSource SrcVid;
                IWMEncSource SrcAud;
                SrcVid = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
                SrcAud = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);

                SrcAud.SetInput("Default_Audio_Device", "Device", "");
                SrcVid.SetInput("ScreenCapture1", "ScreenCap", "");

                IWMEncProfileCollection ProColl;
                IWMEncProfile Pro;
                int i;
                long lLength;

                ProColl = Encoder.ProfileCollection;
                lLength = ProColl.Count;

                for (i = 0; i < lLength - 1; i++)
                {
                    Pro = ProColl.Item(i);

                    if (Pro.Name == WMEncoderManage.DefaultFormat)
                    {
                        SrcGrp.set_Profile(Pro);
                        break;
                    }
                }

                IWMEncDisplayInfo Descr;
                Descr = Encoder.DisplayInfo;
                Descr.Author = "wangchao";
                Descr.Copyright = "wangchao";
                Descr.Description = "wangchao";
                Descr.Rating = "wangchao";
                Descr.Title = "wangchao";

                IWMEncAttributes Attr;
                Attr = Encoder.Attributes;
                Attr.Add("URL", "www.920wc.cn");

                IWMEncFile File;
                File = Encoder.File;
                File.LocalFileName = this.saveFileDialog1.FileName;

                Encoder.Start();
            }
            catch (Exception)
            {

                throw;
            }
        }

 

/// <summary>
        /// 浏览
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            if (DialogResult.OK == this.saveFileDialog1.ShowDialog())
            {
                this.tbFileSave.Text = saveFileDialog1.FileName;
            }
        }

 

在"开始录制"按钮事件中:

private void button2_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.tbFileSave.Text))
            {
                MessageBox.Show("请先选择视频文件保存路径");
                return;
            }

            Coder();

            label3.Text = "录制中...";
        }

   /// <summary>
        /// 停止录制
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            WMEncoderManage.GetWMEncoder.Stop();
        }

        /// <summary>
        /// 暂停录制
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tbFileSave.Text))
            {
                MessageBox.Show("请先开始录制后暂停");
                return;
            }

            if (this.button4.Text == "暂停录制")
            {
                WMEncoderManage.GetWMEncoder.Pause();
                this.button4.Text = "继续录制";

                label3.Text = "录制暂时...";
            }
            else
            {
                WMEncoderManage.GetWMEncoder.Start();

                this.button4.Text = "暂停录制";

               label3.Text = "录制中...";
            }
        }
    }

好了,启动程序,选择保存路径及格式,这样就可以直接录制屏幕了。试一下,效果不错。

时间: 2024-08-29 07:06:29

c# --屏幕录制的相关文章

Win7系统自带的屏幕录制功能怎么使用

  Win7系统自带的屏幕录制功能怎么使用 1.首先按下WIN+R快捷键,然后输入psr.exe,打开问题步骤记录器.      2.现在我们就可以开始录屏操作了.点击开始录制,便处于录制状态,程序可以监视我们鼠标在屏幕的操作并记录下来. 3.录制完毕后,点击右侧的小三角,选择设置,可以设置保存路径.选择好自己的保存路径点击确定即可. 4.在录制过程中我们还可以对屏幕上的某个操作添加批注说明.单击程序界面的添加批注按钮,此时我们看到鼠标变成了一个"+"字,拖到鼠标可以在需要标志的界面中

怎么样秒用win7自带屏幕录制功能

相信很多人都会去下载屏幕录制工具,而有了win7系统你就不需要去下载了,因为win7系统自带这个功能.而屏幕录制还有一个好处,就是当你电脑出现问题的时候,可以把它录制下来,然后发给我,让我帮你解决问题.当然这个是我一个朋友遇到问题经常用的解决方法. 1 这个功能在win7厘米叫做"问题反馈录像机",我们只需要再开始 - 运行里面输入"psr.exe",然后确定,就可以开始了. 有可能会提示缺少atl71.dll文件,如果出现这个问题,请看<我的电脑是win7

Mac屏幕录制软件使用教程

  一.Mac OS X有屏幕录制软件么 苹果Mac自带的屏幕录像软件为---QuickTime Player 二.苹果Mac怎么录制屏幕 第一步.在Launchpad中找到"其他"文件夹,打开后可以看到"QuickTime Player",点击打开. 第二步.点击菜单栏上的"文件"菜单,下拉菜单中点击选择"新建屏幕录制". 第三步.桌面上会出现屏幕录制程序,点击中间的红色按钮即可开始录制,如果需要设置录制时包含鼠标,可以点击

视频解码-用C#开发视频录制软件。包括声音和屏幕录制。保存到flv

问题描述 用C#开发视频录制软件.包括声音和屏幕录制.保存到flv 5C 用C#开发视频录制软件.包括声音和屏幕录制.保存到flv谁能提供我思路和方法阿.用到什么技术,方便一点的,就是录制屏幕和声音 然后生成flv 解决方案 建议研究一下FFmepg吧.FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案. 解决方案二: 或者使用vlc activex. 解决方案三: C# .net对它有

flex-Flex 指定区域屏幕录制 shareobject

问题描述 Flex 指定区域屏幕录制 shareobject 现在需要用B/S架构开发一个程序.应用程序可以导入文档(doc,pdf等),导入之后用户可以在文档上添加标注,比如画线,添加解释等,在文档上的所有操作都要保存下来;类似与区域屏幕录制的功能,不是全屏录制. 我们是做JAVA的,又是B/S结构,目前考虑用flex实现,之前也没接触过flex,所以用flex如何实现也不清楚. 参考了网上的资料,有些帮助的方案有两种: 1.屏幕录制,该时间段的所有操作录制成一个视频 2.shareobjec

10 款免费的 Mac 屏幕录制工具

有些教程使用文字和图像是远远不够的,需要一些简单的视频实例说明.当我们不需要非常强大的功能的时候,免费的 Mac 屏幕录制工具就能发挥它的作用,给我们带来便利. 这里我们介绍 10 款免费的 Mac 屏幕录制工具.这些工具肯定能给大家带来一定的便利,而且能满足大家一些基础的录制要求,同时也会有一部分的限制,比如水印和录制时长.但是这足以帮助大 家录制高质量的视频,如果有什么使用心得,或者有其他更好的屏幕录制工具可以在评论跟大家分享哦:) Screen Recorder Robot Lite 这是

哪位大神能点拨下 实现屏幕录制的步骤?

问题描述 1楼哪位大神能点拨下实现屏幕录制的步骤?现在可以截图了,不知道怎么连成录像..求解答.. 解决方案 解决方案二:有人吗..

WMEncoder 屏幕录制在 win8 调用

问题描述 WMEncoder用这个写了一个屏幕录制软件在xpwin7都能用没问题但是在win8运行不报错直接关闭了enc=newWMEncoderClass();断点到这里程序自动结束有哪位大神知道啊求指点 解决方案 解决方案二:楼主这个问题你解决了没有啊

屏幕录制软件 Adobe Captivate v3.0.0.580 附算号器_常用工具

Captivate是一款屏幕录制软件.使用方法非常简单,任何不具有编程知识或多媒体技能的人都能够快速创建功能强大的软件演示和培训内容.它可以自动生成Flash格式的交互式内容, 而不需要用户学习Flash.使用 Adobe Captivate 3 软件, 任何不具有编程知识或多媒体技能的人都真正能够快速地创建功能强大的.引人入胜的仿真.软件演示.基于场景的培训和测验.通过使用软件的简单的点击用户界面和自动化功能, 学习软件的专业人员.教育工作者和商业与企用用户可以轻松记录屏幕操作.添加电子学习交

Linux 下 8 种优秀的屏幕录制机

最好的Linux桌面会话记录工具 在本文中,我们将介绍一些最优秀的屏幕录制和视频直播的软件,你可以在下面找到你所需要的Linux桌面录制机. 不要错过: 使用'脚本'和'scriptreplay"命令记录Linux终端会话 不要错过: Showterm.io - Linux终端的录音工具 SimpleScreenRecorder SimpleScreenRecorder是一个应用程序,使您可以记录其他的应用程序和你的屏幕上运行的游戏.这是一个简单但功能强大,功能丰富的屏幕记录软件,包括一个易于使