У меня есть приложение, которое записывает звук с помощью MediaRecorder from MIC
всякий раз, когда телефонный звонок присутствует, мне нужно, чтобы быть в состоянии сохранить последние х минут от этой записи, когда вызов завершен - например, разделите аудиофайл, созданный записью.Сплит аудио файлов в Android
Я искал это и все, что мог найти, - как разбить файл .wav
, удалив байт из файла. Но я спасаю файл в: MediaRecorder.OutputFormat.THREE_GPP
с кодировкой: MediaRecorder.OutputFormat.AMR_NB
, и я не нашел способ разделить этот тип файла.
Это мой код:
public class Recorder
{
private MediaRecorder myRecorder;
public String outputFile = null;
private Context context = null;
public Recorder(Context context_app)
{
context = context_app;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss", Locale.getDefault());
df.setTimeZone(TimeZone.getDefault());
String time = df.format(new Date());
outputFile = Environment.getExternalStorageDirectory().
getAbsolutePath() + "/"+time+".3gpp"; //this is the folder in which your Audio file willl save
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myRecorder.setOutputFile(outputFile);
}
public void start() {
try {
myRecorder.prepare();
myRecorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
Toast.makeText(context, e.getMessage(),
Toast.LENGTH_SHORT).show();
// prepare() fails
e.printStackTrace();
}
Toast.makeText(context, "Start recording...",
Toast.LENGTH_SHORT).show();
}
public void stop() {
try {
myRecorder.stop();
myRecorder.reset();
myRecorder.release();
myRecorder = null;
Toast.makeText(context, "Stop recording...",
Toast.LENGTH_SHORT).show();
} catch (RuntimeException e) {
// no valid audio/video data has been received
e.printStackTrace();
}
}
}
Как я могу разделить THREE_GPP
временем и сохранить часть мне нужно в отдельном файле?
Кроме того, я ничего не знаю о манипулировании байтов и файлов непосредственно, поэтому просьба уточнить, если это так, как вы ее решили.
Заранее спасибо
Это не очень простая операция. аудио файлы имеют заголовок, и когда вы пытаетесь удалить что-то с самого начала вы должны позаботиться, чтобы переместить все время заголовок на новое место ... – danysz
, что это хороший повод, чтобы спросить, как это может быть сделано :) –