Android MediaRecorder: непрерывная перезапись
Я пытаюсь записать 10-секундное видео для наблюдения. Это довольно просто, используя MediaRecorder в Android. Все, что мне нужно сделать, это позвонить
mediaRecorder.setMaxDuration(10000);
Однако я хочу непрерывно перезаписывать одно и то же 10-секундное видео. Опять же, это тривиальная задача.
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
switch (what) {
case MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED:
stopRecording();
startRecording();
break;
}
}
Остановка и запуск (сброс) MediaRecorder занимает примерно две секунды. Если что-то важное произошло в течение этих двух секунд, я не запишу это.
Поэтому я последовал за несколькими другими, имеющими ту же проблему, используя LocalSocket и передав его дескриптор MediaRecorder
mediaRecorder.setOutputFile(sender.getFileDescriptor());
Затем AyncTask, содержащий LocalServerSocket и LocalSocket получателя
public class VirtualServer extends AsyncTask<Void, Void, Void> {
...
server = new LocalServerSocket(SOCKET_ADDRESS);
while (true) {
receiver = server.accept();
...
int len = 0;
byte[] data = new byte[1024];
while ((len = input.read(data)) >= 0) {
...
Видишь, куда это идет? Как только это будет решено, возникает новая проблема, также несколько раз решаемая в Stackru. Проблема в том, что файловый дескриптор, переданный MediaRecorder, не доступен для поиска.
Для меня это где мое понимание останавливается. К сожалению, нет четкого описания проблемы. Если кто-то может описать проблему для меня, я могу начать искать решение. В некоторых местах упоминается, что "спорный" должен быть перемещен, но затем обсуждение переходит к общей кодировке mp4, и я теряюсь во всех деталях.
Я надеюсь, что моя проблема четко сформулирована. Я не хочу передавать потоковое видео любого рода. Копание в коде, который упаковывается в RTP и попытка извлечь части, которые мне действительно нужны, еще больше запутало меня.
Ссылки, на которые я уже посмотрел:
- http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system
- http://hello-qd.blogspot.com/2013/05/how-to-process-mediarecorder-frames.html
- Исправить файл 3GP после потоковой передачи с Android Media Recorder
- http://code.google.com/p/ipcamera-for-android/
- Потоковое видео из MediaRecorder через LocalSocket
Приветствия.