如何在Web浏览器嵌入的URL中播放.wav文件 - Java

时间:2010-08-23 08:11:57

标签: java audio embed wav

我想在IE中嵌入默认媒体播放器播放.wav声音文件。声音文件位于某个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获取文件的代码替换为本地硬盘。然后它也可以正常工作。
  3. 我不知道为什么我无法播放来自HTTP的文件。为什么它从本地硬盘播放得很好。

    请帮忙。

1 个答案:

答案 0 :(得分:0)

确保设置正确的响应类型。 IE在这方面非常挑剔。

[编辑]您的复制循环已损坏。试试这段代码:

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,而是覆盖第一个字节。

此外,您从响应中获得的输出流已经缓冲。