У меня Raspberry Pi получает видеоданные с raspivid
и передает их на netcat
, что отправляет их на мой ПК, где я могу прочитать каждый кадр следующим образом:
ServerSocketChannel serverChannel = ServerSocketChannel.open();
serverChannel.socket().bind(new
InetSocketAddress(Main.config.getInt("VIDEO_STREAM_PORT")));
serverChannel.configureBlocking(true);
SocketChannel channel = serverChannel.accept();
InetSocketAddress remoteAddress = (InetSocketAddress)
channel.getRemoteAddress();
int BUFFER_SIZE = 2 << 16 - 1;
ByteBuffer buff = ByteBuffer.allocate(BUFFER_SIZE);
while (channel.read(buff) != -1) {
buff.flip();
if (buff.hasRemaining()) {
buff.compact();
} else {
buff.clear();
}
}
Каков оптимальный способ воспроизведения этих кадров в виде видео в JavaFX? Есть ли способ сделать это, кроме декодирования каждого кадра в виде BufferedImage и рендеринга этого? Или вообще есть другой подход, который мне не хватает?
В Linux вы можете делать то, что я ищу, просто используя netcat | mplayer
, но я бы хотел сделать это в приложении JavaFX.