2010-08-23 4 views
2

IE의 embed default 미디어 플레이어에서 .wav 사운드 파일을 재생하고 싶습니다. 사운드 파일이 일부 HTTP 위치에 있습니다. 나는 그 플레이어에서 그것을들을 수 없다.웹 브라우저에서 URL의 .wav 파일을 재생하는 방법 embed - Java

다음은 코드입니다.

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의 소스 코드입니다. 내 로컬 하드 디스크에 URL에서 파일을 가져 오는 내 코드를 교체 할 경우

<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. 한다. 다음 잘 작동합니다.

왜 HTTP에서 파일을 재생할 수 없는지 알 수 없습니다. 그리고 왜 그것이 로컬 하드 디스크에서 잘 재생되는지.

도와주세요.

답변

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 추가 아니에요 대신 첫 번째 바이트가 덮어 씁니다.

또한 응답에서 가져온 출력 스트림이 이미 버퍼링되었습니다.

+0

나는 또한 그것을 시도했다. 그러나 운이 없다. –

+0

수정 사항을 확인하십시오. 데이터를 파일뿐만 아니라 응답에도 저장하고 해당 파일을 재생하려고합니다 (손상되지 않았 음을 테스트하기 위해). –

관련 문제