Как записать экран на Java, используя новейшую версию MonteMedia ScreenRecorder?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как записать экран на Java, используя новейшую версию MonteMedia ScreenRecorder?

Сообщение Anonymous »

Я пытаюсь записать экран на Java, используя новейшую версию MonteMedia ScreenRecorder:

Код: Выделить всё

ch.randelshofer
org.monte.media
17.1

Мой код похож на многие примеры использования библиотеки, которые я мог найти, однако более старая версия, поскольку я не нашел примеров для новой, поэтому пакеты разные:

Код: Выделить всё

import org.monte.media.math.Rational;
import org.monte.media.screenrecorder.ScreenRecorder;
import org.monte.media.av.Format;
import org.monte.media.av.FormatKeys.MediaType;
import static org.monte.media.av.codec.video.VideoFormatKeys.*;

import java.awt.*;
import java.io.File;
import java.io.IOException;

public class Screencorder {

private Screencorder() {}

public static ScreenRecorder startRecording(String fileName) throws IOException, AWTException {
GraphicsConfiguration gc = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.getDefaultConfiguration();

Format fileFormat = new Format(MediaTypeKey, MediaType.FILE, MimeTypeKey, MIME_AVI);
Format screenFormat = new Format(MediaTypeKey, MediaType.VIDEO, EncodingKey, ENCODING_AVI_TECHSMITH_SCREEN_CAPTURE,
CompressorNameKey, ENCODING_AVI_TECHSMITH_SCREEN_CAPTURE, DepthKey, 24, FrameRateKey,
Rational.valueOf(15), QualityKey, 1.0f, KeyFrameIntervalKey, (15 * 60));
Format mouseFormat = new Format(MediaTypeKey, MediaType.VIDEO, EncodingKey, ScreenRecorder.ENCODING_BLACK_CURSOR, FrameRateKey, Rational.valueOf(30));

ScreenRecorder screenRecorder = new ScreenRecorder(gc, null,
fileFormat, screenFormat, mouseFormat,
null, new File(fileName));

screenRecorder.start();

return screenRecorder;
}

public static void stopRecording(ScreenRecorder screenRecorder) throws IOException {
screenRecorder.stop();
}
}
Выполнение теста:

Код: Выделить всё

import org.junit.jupiter.api.Test;
import org.monte.media.screenrecorder.ScreenRecorder;
import java.time.Duration;
import static org.awaitility.Awaitility.await;

class ScreenRecordingTest {

@Test
void recordingTest() throws Exception {
ScreenRecorder recorder = Screencorder.startRecording("/tmp/");

Thread.sleep(2000)

Screencorder.stopRecording(recorder);
}
}
дает мне:

Код: Выделить всё

java.io.IOException: Error no writer found for file format: Format{mimeType:video/avi,mediaType:FILE}.
Я пробовал различные JDK - 17, 20 - безуспешно.

Пытался сменить каталог на файл, та же ошибка.

Пробовал другой тип MIME - все равно та же ошибка.
Может кто-нибудь помочь, как запустить это, чтобы оно записывало .avi? Или другой формат, похожий на фильм.
Надеюсь, я делаю какую-то очевидную ошибку.

Подробнее здесь: https://stackoverflow.com/questions/766 ... enrecorder
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»