gun2rin
Новичок
JAVA и PHP. Проблема обновления изображения.
Сначала хотел писать в Оффтоп, потому что тут вопрос с Java скорее. Вобщем если есть знающие Java, я на вас надеюсь.
И так. Имеется Видеосервер, к которому подсоеденина камера охранного наблюдения. Выполняя из браузера такой запрос к серверу: http://<servername>/cct-cgi/mjpg/video.cgi?Video=1&StreamType=Image&Resolution=320x240&Compression=2
получаем кадр изображения... Задача. Вывести кадр в Java Applet и обновлять его с определенной периодичностью. Поскольку заставить java грузить картинку с другого сервера проблема. Я сделал промежуточный php скрипт. Очень простой, тестовый (пока нет времени).
Называется он jpeg.php ...
И Апплет на Java:
Аплет берет изображение предоставляемое php скриптом и выводит. Проблема вся в том, что он выводит только один кадр и перерисовывает его. А само изображение не обновляет! Буду очень благодарен за помощь.
Сначала хотел писать в Оффтоп, потому что тут вопрос с Java скорее. Вобщем если есть знающие Java, я на вас надеюсь.
И так. Имеется Видеосервер, к которому подсоеденина камера охранного наблюдения. Выполняя из браузера такой запрос к серверу: http://<servername>/cct-cgi/mjpg/video.cgi?Video=1&StreamType=Image&Resolution=320x240&Compression=2
получаем кадр изображения... Задача. Вывести кадр в Java Applet и обновлять его с определенной периодичностью. Поскольку заставить java грузить картинку с другого сервера проблема. Я сделал промежуточный php скрипт. Очень простой, тестовый (пока нет времени).
PHP:
header("Content-type: image/jpeg");
$jpeg_file=fopen("http://172.16.10.14/cct-cgi/mjpg/video.cgi?Video=1&StreamType=Image&Resolution=320x240&Compression=2","rb");
fpassthru($jpeg_file);
И Апплет на Java:
PHP:
import java.applet.Applet;
import java.awt.*;
public class ShowFrame extends Applet implements Runnable{
private Image myFrame;
Thread animator;
int delay;
int frame;
public void init() {
setBackground(Color.white);
String str = getParameter("fps");
int fps = (str != null) ? Integer.parseInt(str) : 10;
delay = (fps > 0) ? (1000 / fps) : 100;
}
public void start() {
animator = new Thread(this);
animator.start();
}
public void run() {
long tm = System.currentTimeMillis();
while (Thread.currentThread() == animator) {
myFrame = getImage(getDocumentBase(),
"jpeg.php"); //проблемная строка
repaint();
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
break;
}
}
}
public void paint(Graphics g) {
g.drawImage(myFrame, 0, 0, null);
}
}