Добрый день!
Пытаюсь сделать прокси для wav-потока c веб камеры.
Класс занимающися этим, выглядит так:
public class AudioHandler extends HttpServlet {
public AudioHandler() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("audio/wav");
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Cache-Control", "no-cache");
//////////////////////////////////////
InputStream in = null;
OutputStream out = null;
try {
System.err.println("[audio] Get stream!");
// URL = http://localhost:8080/control/audio?cam=10
URL cam = new URL("http://192.168.10." + request.getParameter("cam") + "/audio.cgi");
URLConnection uc = cam.openConnection();
out = new BufferedOutputStream(response.getOutputStream());
in = uc.getInputStream();
byte[] bytes = new byte[8192];
int bytesRead;
while ((bytesRead = in.read(bytes)) != -1) {
out.write(bytes, 0, bytesRead);
}
} catch (IOException ex) {
// Disconnect detected
System.err.println("[audio " + request.getParameter("cam") + "] Audio client disconnected");
// Прерываем поток, иначе передача не будет остановена
Thread.currentThread().interrupt();
}
}
}
С огорчением узнал, что средствами Flash поток wav не проиграть. Но в HTML5 есть тег audio, который может проигрывать wav-поток.
В HTML код:
<audio src="/control/audio?cam=20" controls preload="none">
Your browser does not support the
audio element.
</audio>
Запускаю, слышу поток, но… ровно 33 секунды. После этого воспроизведение останавливается, как будто длинна файла составляет именно эти 33 секунды. Через Firebug видно, что поток не останавливался.
Подскажите, куда копать…