При использовании MediaRecorder
у нас нет паузы/возобновления для уровня API ниже 24. Таким образом, это может быть способ сделать это:
- В случае паузы остановите рекордер и создайте записанный файл.
- И при возобновлении записи снова начните запись, создайте другой файл и продолжайте делать это, пока пользователь не нажмет кнопку «Стоп».
- И, наконец, слейте все файлы.
Многие люди задавали этот вопрос на SO, но так и не смогли найти решение этой проблемы. Люди говорят о создании нескольких медиафайлов, останавливая запись при паузе и перезапуская при возобновлении. Итак, мой вопрос: как мы можем программно объединить/объединить все медиафайлы?
Примечание: в моем случае контейнер MPEG4 — m4a для аудио и mp4 для видео.
Я попытался использовать SequenceInputStream
для объединения нескольких InputStream соответствующих сгенерированных записанных файлов. Но это всегда приводит только к первому файлу.
Фрагмент кода:
Enumeration<InputStream> enu = Collections.enumeration(inputStreams);
SequenceInputStream sqStream = new SequenceInputStream(enu);
while ((oneByte = sqStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, oneByte);
}
sqStream.close();
while (enu.hasMoreElements()) {
InputStream element = enu.nextElement();
element.close();
}
fileOutputStream.flush();
fileOutputStream.close();