Как сделать снимок экрана для видео с помощью C# .Net?
Я знаю, что таких вопросов много.
Но я не хочу использовать кодировщик Windows Media 9, потому что его трудно получить, и он больше не поддерживается.
Я знаю, что одна возможность состоит в том, чтобы сделать много скриншотов и создать видео с ffmpeg
но я не хочу использовать сторонние исполняемые файлы.
Есть ли .net
Единственное решение?
2 ответа
Ответ - Microsoft Expression Encoder. По моему мнению, это самый простой способ записать что-то на Vista и Windows 7
private void CaptureMoni()
{
try
{
Rectangle _screenRectangle = Screen.PrimaryScreen.Bounds;
_screenCaptureJob = new ScreenCaptureJob();
_screenCaptureJob.CaptureRectangle = _screenRectangle;
_screenCaptureJob.ShowFlashingBoundary = true;
_screenCaptureJob.ScreenCaptureVideoProfile.FrameRate = 20;
_screenCaptureJob.CaptureMouseCursor = true;
_screenCaptureJob.OutputScreenCaptureFileName = string.Format(@"C:\test.wmv");
if (File.Exists(_screenCaptureJob.OutputScreenCaptureFileName))
{
File.Delete(_screenCaptureJob.OutputScreenCaptureFileName);
}
_screenCaptureJob.Start();
}
catch(Exception e) { }
}
Редактировать на основе комментариев обратной связи:
Разработчик с именем baSSiLL любезно поделился репозиторием, в котором есть библиотека C# для записи экрана, а также примером проекта на C#, который показывает, как его можно использовать для захвата экрана и микрофона.
Запуск скриншота с использованием примера кода так же прост, как:
recorder = new Recorder(_filePath,
KnownFourCCs.Codecs.X264, quality,
0, SupportedWaveFormat.WAVE_FORMAT_44S16, true, 160);
_filePath - путь к файлу, в который я хочу сохранить видео.
Вы можете передавать различные кодеки, включая AVI, MotionJPEG, X264 и т. Д. В случае x264 мне сначала пришлось установить кодек на мою машину, но AVI работает из коробки.
Качество вступает в игру только при использовании AVI или MotionJPEG. Кодек x264 управляет своими собственными настройками качества.
0 выше - аудиоустройство, которое я хотел бы использовать. По умолчанию это ноль.
В настоящее время он поддерживает 2 волновых формата. 44100 на 16 бит или стерео или моно.
Параметр true указывает, что я хочу, чтобы аудио кодировалось в формате mp3. Я считаю, что это необходимо при выборе x264, поскольку несжатый звук, объединенный в файл.mp4, не будет воспроизводиться для меня.
160 - это битрейт для кодирования звука.
~~~~~
Чтобы остановить запись, вы просто
recorder.Dispose();
recorder = null;
Все с открытым исходным кодом, так что вы можете редактировать класс рекордера и изменять размеры, количество кадров в секунду и т. Д.
~~~~
Чтобы начать работу с этой библиотекой, вам нужно будет либо загрузить, либо извлечь файлы из библиотек github / codeplex, указанных ниже. Вы также можете использовать NuGet:
Установочный пакет SharpAvi
Исходное сообщение:
Sharp AVI: https://sharpavi.codeplex.com/ или https://github.com/baSSiLL/SharpAvi
В этой библиотеке есть пример проекта, в котором есть отличный экранный рекордер и меню настроек / и т.д.
Сначала я нашел Screna из другого ответа на этот вопрос StackoverFlow, но столкнулся с парой проблем, связанных с корректной работой кодировщика Mp3 Lame. Screna - это обёртка для SharpAVI. Я обнаружил, что, удалив Screna и взяв образец SharpAvi, мне повезло больше.