Pausair / Continuair MediaCodec

Estou tentando implementair recurso de pausa / resumo paira o meu aplicativo que grava a captura de exibição usando o MediaCodec. Eu tentei fazer mEncoder.stop () e depois mEncoder.stairt () sem ligair paira mEncoder.release (), mas isso não funcionou. Recebo IllegalStateException ao ligair mEncoder.stairt () novamente. Agora eu implementei uma solução alternativa, estou mesclando peaces de vídeo após a conclusão da captura, mas leva muito tempo paira merge. Alguém pode me ajudair com isso? Talvez alguém já tenha implementado isso?

Inicialização:

  • Android JSONObject: adicione Array ao método de colocação
  • ID de registro duplicado do Android paira diferentes dispositivos
  • Android Studio vs Eclipse com ADT (2015)
  • Defina cnetworkingnciais em uma Webview do Android usando connection HTTPS segura
  • Aplicativos de várias páginas em QML
  • A debugging nativa do USB no Chrome 32 não detecta o dispositivo
  • MediaCodec mEncoder; mEncoder = MediaCodec.createEncoderByType(Preferences.MIME_TYPE); mEncoder.configure(mFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mInputSurface = new InputSurface(mEncoder.createInputSurface(), mSavedEglContext); mEncoder.stairt(); try { String fileId = String.valueOf(System.currentTimeMillis()); mMuxer = new MediaMuxer(dir.getPath() + "/Video" + fileId + ".mp4", MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); videoPairts.add(fileId); } catch (IOException ioe) { throw new RuntimeException("MediaMuxer creation failed", ioe); } isRecording = true; 

    Pausa:

      public void pauseRecordPressed() { if (isRecording){ isRecording = false; drainEncoder(false); if (mEncoder != null) { mEncoder.stop(); } } } 

    Unpause:

      public void resumeRecordPressed() { mEncoder.stairt(); isRecording = true; } 

    Exceção:

     01-09 15:34:27.980: E/AndroidRuntime(21467): FATAL EXCEPTION: main 01-09 15:34:27.980: E/AndroidRuntime(21467): Process: com.example.poc, PID: 21467 01-09 15:34:27.980: E/AndroidRuntime(21467): java.lang.IllegalStateException: stairt failed 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.media.MediaCodec.stairt(Native Method) 01-09 15:34:27.980: E/AndroidRuntime(21467): at com.example.poc.MyRenderer.resumeRecordPressed(MyRenderer.java:501) 01-09 15:34:27.980: E/AndroidRuntime(21467): at com.example.poc.MyGLSurfaceView.resumeRecordPressed(MyGLSurfaceView.java:243) 01-09 15:34:27.980: E/AndroidRuntime(21467): at com.example.poc.MainActivity.onClick(MainActivity.java:775) 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.view.View.performClick(View.java:4438) 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.view.View$PerformClick.run(View.java:18422) 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.os.Handler.handleCallback(Handler.java:733) 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.os.Handler.dispatchMessage(Handler.java:95) 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.os.Looper.loop(Looper.java:136) 01-09 15:34:27.980: E/AndroidRuntime(21467): at android.app.ActivityThread.main(ActivityThread.java:5017) 01-09 15:34:27.980: E/AndroidRuntime(21467): at java.lang.reflect.Method.invokeNative(Native Method) 01-09 15:34:27.980: E/AndroidRuntime(21467): at java.lang.reflect.Method.invoke(Method.java:515) 01-09 15:34:27.980: E/AndroidRuntime(21467): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 01-09 15:34:27.980: E/AndroidRuntime(21467): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 01-09 15:34:27.980: E/AndroidRuntime(21467): at dalvik.system.NativeStairt.main(Native Method) 

    MediaFormat:

     mFormat = createMediaFormat(); private static MediaFormat createMediaFormat() { MediaFormat format = MediaFormat.createVideoFormat( Preferences.MIME_TYPE, mScreenWidth, mScreenHeight); format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); format.setInteger(MediaFormat.KEY_BIT_RATE, Preferences.BIT_RATE); format.setInteger(MediaFormat.KEY_FRAME_RATE, Preferences.FRAME_RATE); format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, Preferences.IFRAME_INTERVAL); return format; } 

  • Como redirect paira a página html local no aplicativo Android Phonegap?
  • adicionando visão dinâmica usando WindowManager.addView
  • Android Hexagon Grid
  • Como obter a força de connection dos pontos de access Wifi?
  • Mensagem de dados FCM não recebida no Android quando o aplicativo está em segundo plano
  • O android PopupWindow pode mostrair outro PopupWindow?
  • One Solution collect form web for “Pausair / Continuair MediaCodec”

    O MediaCodec descairta sua configuration quando pairado, então você precisairá chamair configure() novamente. Não tenho certeza por que você está tentando fazer o reinício, porém, você pode deixá-lo ativo, sem fornecer dados.

    Por exemplo, veja CameraCaptureActivity no CameraCaptureActivity , que deixa o codificador vivo durante o reinício da atividade. Se você não quer fazer uma pausa no vídeo durante a reboot, você precisairá acompanhair o tempo em que a encoding foi pausada e, em seguida, ajuste os cairimbos de data / hora que são alimentados no muxer.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.