Мой сценарий подобен тому, что когда пользователь открывает действие, мне нужно записать звук, как только активность возобновится, как только активность умрет, я загружаю файл записи на свой сервер.
Ниже приведен код, для которого я использую на стороне 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. Пожалуйста, предложите, что мне делать