我想在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" />
我不知道为什么我无法播放来自HTTP的文件。为什么它从本地硬盘播放得很好。
请帮忙。
答案 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
,而是覆盖第一个字节。
此外,您从响应中获得的输出流已经缓冲。