У меня следующая проблема. Я изменил этот пример для себя:
Пример веб-камеры Capture Live Streaming
В данный момент связь выглядит так, как client1 отправляет изображение на сервер, а изображение с сервера отправляется на client2. Нет проблем, если я работаю с одной камерой. Проблемы начинаются, если я смотрю с двух разных камер. Я хотел бы, чтобы client1 отправлял изображение на сервер через определенный порт, и только через этот порт сервер отправляет изображение клиенту.2 В настоящий момент (я не знаю, почему) дело в том, что получает сервер например, на порту 2000 он отправляет все порты, а не только порт 2000. Вы можете мне помочь?
Некоторый код с сервера:
@Override
public void start(SocketAddress streamAddress) {
logger.info("server started:{}", streamAddress);
Channel channel = serverBootstrap.bind(streamAddress);
channelGroup.add(channel);
}
.
this.serverBootstrap = new ServerBootstrap();
this.serverBootstrap.setFactory(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
this.serverBootstrap.setPipelineFactory(new StreamServerChannelPipelineFactory(new StreamServerListenerIMPL(), streamFrameListener));
.
public static void send(BufferedImage image) throws Exception {
Object msg = h264StreamEncoder.encode(image);
channelGroup.write(msg);
}
Код от клиента1:
public static void init(String host, int port) {
Webcam webcam = Webcam.getWebcams().get(0);
Dimension sizeVideo = WebcamResolution.QVGA.getSize();
webcam.setViewSize(sizeVideo);
StreamAtmAgent atmAgent = new StreamAtmAgent(webcam, sizeVideo);
atmAgent.connect(new InetSocketAddress(host, port));
}
.
Код от клиента2:
public static void init(String host, int port, ImageListener il) {
displayWindow.setVisible(true);
logger.info("Ustawione wymiary :{}", dimension);
StreamClientAgent clientAgent = new StreamClientAgent(il, dimension);
clientAgent.connect(new InetSocketAddress(host, port));
}
Вы можете мне помочь? Если вам нужно больше кода, скажите мне.
P.S Когда я делаю что-то подобное на стартовом сервере:
init("localhost",2000)
init("localhost",2001)
И я подключаю свой client1 к серверу с портом 2000, и я подключаю client2 к порту 2001. Я все еще вижу изображение с порта 2000.