свойства c # VideoFileWriter - PullRequest
0 голосов
/ 13 мая 2018

Я хочу записать свой экран во время использования моей программы.

Сейчас я использую этот код:

recorder.Open(pathFolder+GetCurrentDateAndTime() + ".mp4", Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenWidth), Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenHeight), 10, VideoCodec.MPEG4, 2000000);

Запись хорошая, но слишком быстрая.

Что я должен изменить, чтобы он не был слишком быстрым и имел нормальную скорость?

1 Ответ

0 голосов
/ 13 мая 2018

Прежде всего, инициализируйте элемент управления таймером и присвойте ему свойства. Затем создайте для этого таймера событие tick .

videoTimer = новый таймер (); videoTimer.Interval = 20; videoTimer.Tick + = videoTimer_Tick;

vfWriter = new VideoFileWriter (); vfWriter.Open ("Exported_Video.avi", 800, 600, 25, VideoCodec.MPEG4, 1000000);

Затем создайте кнопку запуска, чтобы запустить таймер .

private void btnStart_Click(object sender, EventArgs e) { videoTimer.Start(); }

В событии таймера tick создайте растровое изображение размером VideoFileWriter , захватите экран и запишите его в растровое изображение. Затем запишите изображение в VideoFileWriter .

private void videoTimer_Tick(object sender, EventArgs e){bp = new Bitmap(800, 600); gr = Graphics.FromImage(bp);gr.CopyFromSceen(0, 0, 0, 0, new Size(bp.Width, bp.Height));
pictureBox1.Image = bp;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
vfWriter.WriteVideoFrame(bp);

}

В конце создайте кнопку остановки, чтобы остановить таймер и сохранить файл.

private void btnStop_Click(object sender, EventArgs e){ videoTimer.Stop();vfWriter.Close();}
...