如何使用 ffmpeg 捕获整个桌面,但没有 ffmpeg 的控制台窗口


这是我

在命令提示符下的做法:

ffmpeg -f gdigrab -framerate 24 -i desktop -preset ultrafast -pix_fmt yuv420p out.mp4

在 csharp 代码中:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using System.IO;  
using System.Diagnostics;  
namespace Ffmpeg_App  
{  
    class Ffmpeg  
    {  
        Process process;  
        public void Start(string FileName, int Framerate)  
        {  
            process = new System.Diagnostics.Process();  
            process.StartInfo.FileName = @"D:ffmpegx86ffmpeg.exe"; // Change the directory where ffmpeg.exe is.  
            process.EnableRaisingEvents = false;  
            process.StartInfo.WorkingDirectory = @"D:ffmpegx86"; // The output directory  
            process.StartInfo.Arguments = @"-f gdigrab -framerate " + Framerate + " -i desktop -preset ultrafast -                                                                     pix_fmt yuv420p " + FileName;  
            process.Start();  
            process.StartInfo.UseShellExecute = false;  
            process.StartInfo.CreateNoWindow = false;  
            Close();  
        }  
        public void Close()  
        {  
            process.Close();  
        }  
    }  
}  

在窗体 1 顶部:

Ffmpeg fpeg = new Ffmpeg();

"开始"按钮:

private void Start_Click(object sender, EventArgs e)  
        {  
            fpeg.Start("test.mp4", 24);  
        }  

停止按钮:

private void Stop_Click(object sender, EventArgs e)  
        {  
            fpeg.Close();  
        } 

问题是当我开始录制它时,当我停止录制时,它也记录了前几秒钟 ffmpeg 的控制台窗口太相同了。

在这两种情况下,我如何仅使用命令提示符或与 csharp 一起使用,它不会显示 ffmpeg 的控制台窗口?

Ffmpeg 控制台窗口

更改以下 3 行:

process.Start(); 
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = false;

自:

process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start(); 

请确保在调用"开始"之前设置 StartInfo 属性。使用 CreateNoWindow,以便不显示任何窗口。

最新更新