MediaCodec с поверхностным вводом: получение фрагментированного вывода

я пытаюсь создать короткие последовательные файлы mp4 из данных CameraPreview черезMediaCodec.createInputSurface(), Однако воссозданиеMediaCodec и это's Связанная поверхность требует остановки камеры, чтобы разрешить другой вызовmCamera.setPreviewTexture(...), Эта задержка приводит к недопустимому количеству пропущенных кадров.

Поэтому мне нужно создатьCODEC_CONFIG а такжеEND_OF_STREAM данные периодически без воссоздания входной поверхности, и, следовательно, необходимости вызоваmCamera.setPreviewTexture(...), Возможно ли это при условииMediaFormat без изменений?

(Я'м адаптации ФадденаCameraToMpegTest пример. Мой полный кодВот)

Неудачные попытки:

призваниеMediaCodec.signalEndOfInputStream()истощаяMediaCodec, а затем позвонивMediaCodec.flush() между кусками производитIllegalStateException на 2-й звонок в.MediaCodec.signalEndOfInputStream()

призваниеMediaCodec.signalEndOfInputStream()истощаяMediaCodec, а затем позвонивMediaCodec.stop(); MediaCodec.configure(...), MediaCodec.start() между кусками без повторного вызоваMediaCodec.createInputSurface() выдает следующую ошибку:

    09-30 13:12:49.889  17638-17719/x.xx.xxxx E/Surface﹕ queueBuffer: error queuing buffer to SurfaceTexture, -19
09-30 13:12:49.889  17638-17719/x.xx.xxxx E/IMGSRV﹕ :0: UnlockPostBuffer: Failed to queue buffer 0x592e1e70
09-30 13:12:49.889  17638-17719/x.xx.xxxx E/CameraToMpegTest﹕ Encoding loop exception!
09-30 13:12:49.889  17638-17719/x.xx.xxxx W/System.err﹕ java.lang.RuntimeException: eglSwapBuffers: EGL error: 0x300b
09-30 13:12:49.896  17638-17719/x.xx.xxxx W/System.err﹕ at x.xx.xxxx.ChunkedHWRecorder$CodecInputSurface.checkEglError(ChunkedHWRecorder.java:731)
09-30 13:12:49.896  17638-17719/x.xx.xxxx W/System.err﹕ at x.xx.xxxx.ChunkedHWRecorder$CodecInputSurface.swapBuffers(ChunkedHWRecorder.java:713)
09-30 13:12:49.896  17638-17719/x.xx.xxxx W/System.err﹕ at x.xx.xxxx.ChunkedHWRecorder.startRecording(ChunkedHWRecorder.java:164)
09-30 13:12:49.896  17638-17719/x.xx.xxxx W/System.err﹕ at x.xx.xxxx.HWRecorderActivity$CameraToMpegWrapper.run(HWRecorderActivity.java:76)
09-30 13:12:49.896  17638-17719/x.xx.xxxx W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

решаемая Спасибо, Фадден. Полный источник решенияВот.

Ответы на вопрос(1)

Ваш ответ на вопрос