Android Record Audio и извлечение его продолжительности выдает исключение в формате WAV - PullRequest
0 голосов
/ 01 апреля 2019

Мой сценарий подобен тому, что когда пользователь открывает действие, мне нужно записать звук, как только активность возобновится, как только активность умрет, я загружаю файл записи на свой сервер.

Ниже приведен код, для которого я использую на стороне Android для записи файла

    private MediaRecorder myAudioRecorder;
    myAudioRecorder = new MediaRecorder();
    myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    myAudioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    myAudioRecorder.setAudioSamplingRate(16000);
    myAudioRecorder.setAudioChannels(1);
    myAudioRecorder.setAudioEncodingBitRate(16000);
    myAudioRecorder.setOutputFile("Path to the storage with filename and extension as wav");

Ниже приведен код на стороне сервера, который я использую для извлечения длительности из аудио:

public class MyUtils {
 public int getAudioFileSize(String pathToFile) {

  try {
   File file = new File(pathToFile);


   AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);


   AudioFormat format = audioInputStream.getFormat();
   long frames = audioInputStream.getFrameLength();
   double durationInSeconds = (frames + 0.0) / format.getFrameRate();
   return (int) durationInSeconds;
  } catch (UnsupportedAudioFileException | IOException e) {
   e.printStackTrace();
  }
  return 0;
 }

 public static void main(String[] args) throws UnsupportedAudioFileException, IOException {
  System.out.println(new MyUtils().getAudioFileSize("/tmp/mysample.wav"));
 }



}

Ниже приведено исключение, которое я получаю:

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java: 1189)
at ai.talentify.utils.ui.AudioUtils.getAudioFileSize(AudioUtils.java: 28)
at ai.talentify.utils.ui.AudioUtils.main(AudioUtils.java: 42)

Но если я конвертирую тот же файл, используя этот URL, в файл wav, то это сработает

Так что я не мог понять, как я могу правильно записать звук в формате WAV. Пожалуйста, предложите, что мне делать

...