Как воспроизвести WAV-файл с URL в веб-браузере для вставки - PullRequest
2 голосов
/ 23 августа 2010

Я хочу воспроизвести звуковой файл .wav в медиаплеере embed по умолчанию в IE. Звуковой файл находится в некотором местоположении HTTP. Я не могу озвучить это в этом плеере.

Ниже приведен код.

    URL url = new URL("http://www.concidel.com/upload/myfile.wav");
        URLConnection urlc = url.openConnection();
        InputStream is = (InputStream)urlc.getInputStream();
         fileBytes = new byte[is.available()];
         while (is.read(fileBytes,0,fileBytes.length)!=-1){}
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
         out.write(fileBytes);

Вот код для вставки HTML.

<embed src="CallStatesTreeAction.do?ivrCallId=${requestScope.vo.callId}&agentId=${requestScope.vo.agentId}" type="application/x-mplayer2" autostart="0" playcount="1" style="width: 40%; height: 45" />
  1. Если я напишу в FileOutputStream, тогда все будет хорошо
  2. Если я заменю свой код получения файла с URL на мой локальный жесткий диск. тогда тоже работает нормально.

Я не знаю, почему я не могу воспроизвести файл с HTTP. И почему он хорошо играет с локального жесткого диска.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 23 августа 2010

Убедитесь, что вы установили правильный тип ответа. IE очень требователен в этом отношении.

[EDIT] Ваш цикл копирования прерван. Попробуйте этот код:

URL url = new URL("http://www.concidel.com/upload/myfile.wav");
URLConnection urlc = url.openConnection();
InputStream is = (InputStream)urlc.getInputStream();
fileBytes = new byte[is.available()];
int len;
while ( (len = is.read(fileBytes,0,fileBytes.length)) !=-1){
    response.getOutputStream.write(fileBytes, 0, len);
}

Проблема с вашим кодом: если данные не извлекаются за один вызов is.read(), они не добавляются к fileBytes, а вместо этого перезаписываются первые байты.

Кроме того, выходной поток, полученный из ответа, уже буферизован.

...