一、前言
上一篇文章已经知道了FFmpeg的录屏命令格式,那么,如何自己开发c#程序,实现录屏功能呢?其实单纯利用c#开发录屏软件,方法有很多:
- 可以基于Accord(AForge)自行开发,思路就是以一定时间间隔捕获屏幕,再利用Accord实现高效的视频编码等,但是这样做一是稍微复杂了一点,二是不知道怎么利用GPU加速,毕竟占CPU太高的话,影响使用。大神可以自行研究一下。
- 可以基于FFmpeg.AutoGen开发,这个可以看做是FFmpeg的C#版吧,但是这个东西对.Net Framework4.5以上兼容性不好啊,原作者貌似现在也没解决这个问题,总之就是没研究明白,还浪费了不少时间,先放弃了。
- 可以基于OpencvSharp,原理与Accord类似,自己实现录屏的捕获桌面、编码等全过程,没试过,不知道效率怎么样,不过以opencv的尿性,应该值得信赖吧。
- 可以基于ScnLib,这是一家公司开发的录屏SDK,有各种语言实现的版本,能试用(有水印),东西好是真的好,但是也真贵啊,本着程序员自给自足的精神,花钱买它真是羞耻。(土豪忽略)
- 可以基于FFmpeg.exe,c#程序后台调用这个进程,实现录屏,实际上就是借用FFmpeg.exe来实现录屏,这个方法简单,而且人家FFmpeg做的那么好,干嘛不用呢,节约时间,开干吧。
二、方法
通过调用系统API加载ffmpeg.exe,向其模拟输入命令的的方式进行录屏录音,然后模拟输入q用于暂停录制。具体实现方式如下,直接上代码:
public class ScreenRecordHelper
{
#region 模拟控制台信号需要使用的API
[DllImport("kernel32.dll")]
static extern bool GenerateConsoleCtrlEvent(int dwCtrlEvent, int dwProcessGroupId);
[DllImport("

本文介绍如何使用C#调用FFmpeg进行屏幕录制。通过加载ffmpeg.exe并模拟命令输入,实现桌面视频与音频的录制。文章提供源代码示例,包括启动和停止录制的方法。

5561

被折叠的 条评论
为什么被折叠?



