我有一个Raspberry Pi,它从raspivid
获取视频数据并将其传输到netcat
,然后将其发送到我的PC,在其中我可以读取这样的每一帧:
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应用程序中完成此操作。