Как я могу установить размер видеозаписи в ffmpeg в соответствии с размером form1 ?
У меня есть класс видео :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Diagnostics; namespace Desktop_Recorder { class Ffmpeg { Process process; public void Start(string FileName, int Framerate) { process = new System.Diagnostics.Process(); process.StartInfo.FileName = @"D:\ffmpegx86\ffmpeg.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 + "-video_size 1920x1080 -offset_x 240 -offset_y 450 -i desktop -preset ultrafast -pix_fmt yuv420p" + FileName; process.Start(); process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; Close(); } public void Close() { process.Close(); } } }
В аргументах я устанавливаю местоположение на рабочем столе для записи:
-offset_x 240 -offset_y 450
Но теперь я хочу также установить ширину и высоту того, что нужно записать.
Как прямоугольник. Я хочу записать видео внутри прямоугольника.
Например: прямоугольник находится в местоположении 10,10, а размер прямоугольника равен: 20,20,20,20
Поэтому я хочу записать на рабочий стол только область внутри прямоугольника.
В форме 1 я сделал это в конструкторе:
Ffmpeg fpeg = new Ffmpeg(); fpeg.Start("test.mp4", 24);
Затем я создаю прямоугольник:
private void TransparentControl1_Paint(object sender, PaintEventArgs e) { using (var pen = new Pen(this.ForeColor, 70)) { e.Graphics.DrawRectangle(pen, 0, 0, this.transparentControl1.Width - 1, this.transparentControl1.Height - 1); } }
Затем в событии перемещения мыши я получаю местоположение и размер form1: это прямоугольник.
private void TransparentControl1_MouseMove(object sender, MouseEventArgs e) { Point location = new Point(this.Location.X, this.Location.Y); Size size = new Size(this.Width, this.Height); }
Что я хочу сделать, так это записать видео в режиме реального времени только внутри прямоугольника.
Не один раз, а в режиме реального времени, поэтому, если я перемещаю form1(прямоугольник) вокруг него, он будет записывать только область внутри form1(прямоугольника).
Что я уже пробовал:
То, что я пробовал, описано в задаче.