제 응용 프로그램은 웹 UI를 통해 웨이브 파일을 업로드하고 형식을 8k, 8 비트 멀티 파일로 변환하여 서버에 저장하는 작업과 관련이 있습니다.Javasound : AudioSystem.getAudioInputStream이 서버에서 작동하지 않고 클라이언트 코드에서 작동합니다.
final AudioInputStream ais = AudioSystem.getAudioInputStream(in);
오류는 다음과 같습니다 :
Caused by: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1102) [classes.jar:1.6.0_65]
그래서 내가 로컬로 오디오 파일을로드하려고 간단한 테스트 케이스로 축소 할 시도 할 때 내 코드는 서버에서 실패 파일 :
final File audioFile = new File("/path/to/audio.wav");
final InputStream in = new FileInputStream(file);
final AudioInputStream ais = AudioSystem.getAudioInputStream(in);
이것은 작동합니다. 나는 다시 내 서버 측에 가서과 같이 몇 가지 디버깅을 추가 :
final byte[] audio = IOUtils.toByteArray(in);
final File audioLog = File.createTempFile("audiolog", ".wav");
IOUtils.write(audio, new FileOutputStream(audioLog));
s_logger.info("File logged to: " + audioLog.getAbsolutePath());
final InputStream byteIn = new ByteArrayInputStream(audio);
final AudioInputStream ais = AudioSystem.getAudioInputStream(byteIn);
이 동일한 방법으로 실패합니다.
나는 다음 서버에 기록 오디오 파일에 대한 업로드 된 원본 파일을 비교하고 바로 검사에 이르기까지, 동일 :
$ cksum uploaded.wav
4019972581 84076 uploaded.wav
$ cksum audiolog6415586848170376004.wav
4019972581 84076 audiolog6415586848170376004.wav
에 갈 수 있습니다 무엇을 어떤 아이디어? 내 서버 측 코드가 JBoss 7.1에서 실행됩니다.
감사합니다.
-kr
서버에 오디오를 재생할 드라이버 및/또는 하드웨어가 없을 가능성이 높습니다. – MadProgrammer
가능성이 낮습니다. 서버는 재생할 필요가 없습니다. 또한 오디오가 분석되는 시점에서 코드가 작동하지 않습니다. – Raj
아니요, 서버에서 오디오 파일 (아마도 재생 용)을 열려고합니다 ... – MadProgrammer