Лучший отвечающий
C#, Захват экрана

Вопрос
-
Всем привет!
Есть программы
OBS Studio, Nero Video,
с помощью которых можно
создавать видики из происходящего на экране.
А есть ли возможность на C#
создать такой захват экрана?
4 июля 2022 г. 6:57
Ответы
-
Если я правильно поняла вашу задачу, то она сводиться к превращению последовательности скриншотов в видео ряд. Вот тут вроде была похожая задача. Не скриншоты, но думаю как сделать скрин не проблема для вас)))
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 июля 2022 г. 9:11
6 июля 2022 г. 5:38 -
Это не захват экрана.
Это рисовка живой картинки
и создание видеофайла,
но меня это устраивает.
using System.Drawing; using System.Windows.Forms; using Accord.Video.FFMPEG; // Nuget namespace BitmapToAvi { public partial class MainForm : Form { public MainForm() { InitializeComponent(); BitmapToAvi (); } public void BitmapToAvi () { int width = 320, height = 240; VideoFileWriter writer = new VideoFileWriter( ); writer.Open ( "Out.avi", width, height, 25, VideoCodec.MPEG4 ); Bitmap image = new Bitmap( width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb ); for ( int i=1;i<width; i++) for ( int j=1;j<height;j++) image.SetPixel ( i, j, Color.White ); // ??? // Color.White ==> image for ( int i = 0; i < 1000; i++ ) { image.SetPixel ( i % width, i % height,Color.Red ); writer.WriteVideoFrame ( image ); } pictureBox.Image = image; writer.Close(); image.Save ( "Out.png" ); } } }- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 июля 2022 г. 9:10
7 июля 2022 г. 20:46 -
Здравствуйте,
Смотрите: Учебник. Потоковая трансляция в реальном времени с помощью Служб мультимедиа Azure и .NET 5.0
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 июля 2022 г. 9:10
4 июля 2022 г. 7:43Модератор
Все ответы
-
Здравствуйте,
Смотрите: Учебник. Потоковая трансляция в реальном времени с помощью Служб мультимедиа Azure и .NET 5.0
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 июля 2022 г. 9:10
4 июля 2022 г. 7:43Модератор -
Максим, спасибо!
Разбираюсь!4 июля 2022 г. 8:29 -
Если я правильно поняла вашу задачу, то она сводиться к превращению последовательности скриншотов в видео ряд. Вот тут вроде была похожая задача. Не скриншоты, но думаю как сделать скрин не проблема для вас)))
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 июля 2022 г. 9:11
6 июля 2022 г. 5:38 -
Лилия, привет!
Вы, как всегда, меня выручаете!
Спасибо, очень полезно!
Есть и другие варианты.
Когда определюсь, покажу решение.6 июля 2022 г. 20:11 -
Это не захват экрана.
Это рисовка живой картинки
и создание видеофайла,
но меня это устраивает.
using System.Drawing; using System.Windows.Forms; using Accord.Video.FFMPEG; // Nuget namespace BitmapToAvi { public partial class MainForm : Form { public MainForm() { InitializeComponent(); BitmapToAvi (); } public void BitmapToAvi () { int width = 320, height = 240; VideoFileWriter writer = new VideoFileWriter( ); writer.Open ( "Out.avi", width, height, 25, VideoCodec.MPEG4 ); Bitmap image = new Bitmap( width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb ); for ( int i=1;i<width; i++) for ( int j=1;j<height;j++) image.SetPixel ( i, j, Color.White ); // ??? // Color.White ==> image for ( int i = 0; i < 1000; i++ ) { image.SetPixel ( i % width, i % height,Color.Red ); writer.WriteVideoFrame ( image ); } pictureBox.Image = image; writer.Close(); image.Save ( "Out.png" ); } } }- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 июля 2022 г. 9:10
7 июля 2022 г. 20:46