Как записать экран на 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»