BT709 FFMPEG с Java, застрявшей при чтении необработанного ввода из процесса [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 BT709 FFMPEG с Java, застрявшей при чтении необработанного ввода из процесса [закрыто]

Сообщение Anonymous »

Я сейчас создаю мод Minecraft, который воспроизводит видео с определенными фильтрами. При использовании Image2pipe из FFMPEG для чтения необработанных данных все прекрасно проходит при открытии какого-либо видео без настройки Colorspace.

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

ProcessBuilder pb = new ProcessBuilder(
"ffmpeg",
"-i", filename,
"-ss", String.valueOf(startFrame / videoFps),
"-vf", String.format("scale=%d:%d:force_original_aspect_ratio=decrease,pad=%d:%d:(ow-iw)/2:(oh-ih)/2,fps=%.2f",
canvasWidth, canvasHeight, canvasWidth, canvasHeight, targetFps),
"-f", "image2pipe",
"-vcodec", "rawvideo",
"-pix_fmt", "rgb24",
"-an",
"-"
);

System.out.println("Starting FFmpeg: " + String.join(" ", pb.command()));
ffmpegProcess = pb.start();

int frameSize = canvasWidth * canvasHeight * 3; // RGB24 = 3 bytes per pixel
byte[] buffer = new byte[frameSize];

try (InputStream inputStream = ffmpegProcess.getInputStream();
BufferedReader errorReader = new BufferedReader(new InputStreamReader(ffmpegProcess.getErrorStream()))) {

int frameNum = startFrame;

while (!shouldStop && ffmpegProcess.isAlive()) {
int bytesRead = inputStream.read(buffer);
if (bytesRead != frameSize) {
System.err.println("Incomplete frame read");
break;
}

BufferedImage frame = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_3BYTE_BGR);
frame.getRaster().setDataElements(0, 0, canvasWidth, canvasHeight, buffer);

// ...
}
} catch (IOException e) {
// ...
}
Экспорт изображения вне мода работает нормально, но Java застрянет при попытке прочитать DataStream.

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

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

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

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

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

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

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