Воспроизведение закодированного потока H.264 в JavaFX - PullRequest
0 голосов
/ 01 июля 2018

У меня 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.

...