Добрый день!
Пытаюсь сделать прокси для 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); out.flush(); }
} 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 видно, что поток не останавливался и данные еще передаются.
Подскажите, куда копать… |