Grabación de errores en vídeos android

Estoy tratando de reocord muchos videos de 30 segundos en el fondo, pero, después de 20 o 30 videos de mi servicio que está deteniendo y el lanzamiento del proceso para grabar vaya lentamente.

He intentado con un servicio en el mismo proceso y el problema era igual.

Mi controlador de video:

@Override public void onCreate() { super.onCreate(); isRunning = true; idAlerta = Common.getStorage().getString(Constants.ID_ALERTA_SERVICE, ""); videoCount = 1; mIntentRecorder = new Intent(VideoHandlerService.this, RecorderService.class); mIntentSend = new Intent(VideoHandlerService.this, SendVideoService.class); updateVideoTime(); mIntentRecorder.putExtra(Constants.VIDEO_TIME, videoTime); mIntentRecorder.putExtra(Constants.ID_ALERTA_SERVICE, idAlerta); mIntentRecorder.putExtra(Constants.COUNT_ALERTA, videoCount); startService(mIntentRecorder); newVideo(); } public void newVideo() { Common.log("new Video"); new Handler().postDelayed(new Runnable() { @Override public void run() { videoCount++; startNewVideo(); if (videoCount == 2) sendVideo(4000); } }, videoTime + 2000); } public void startNewVideo() { final Intent intentRecorder = new Intent(VideoHandlerService.this, RecorderService.class); intentRecorder.putExtra(Constants.VIDEO_TIME, videoTime); Common.log("idAlerta " + idAlerta); intentRecorder.putExtra(Constants.ID_ALERTA_SERVICE, idAlerta); intentRecorder.putExtra(Constants.COUNT_ALERTA, videoCount); stopService(intentRecorder); if (Common.getStorage().getBoolean(Constants.RECORDER_ACTIVE, false)) { if (Common.getStorage().getString(Constants.ID_ALERTA_SERVICE, "") != null && Common.getStorage().getString(Constants.ID_ALERTA_SERVICE, "").length() > 0) { new Handler().postDelayed(new Runnable() { @Override public void run() { Common.log("Start service recorder"); startService(intentRecorder); newVideo(); } }, 5000); } } else new Handler().postDelayed(new Runnable() { @Override public void run() { startNewVideo(); } }, 5000); } 

Y este es el proceso para registrar:

 @Override public int onStartCommand(Intent intent, int flags, int startId) { Common.log("onStartCommand"); if (intent != null && ((Common.getStorage().getString(Constants.ID_ALERTA_SERVICE, "") != null && Common.getStorage().getString(Constants.ID_ALERTA_SERVICE, "").length() > 0))) { windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); mLayoutParams = new WindowManager.LayoutParams( 1, 1, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT ); mLayoutParams.gravity = Gravity.LEFT | Gravity.TOP; //Cojo Información del videohandler Common.log("Intent distinto de null"); mVideoTime = intent.getIntExtra(Constants.VIDEO_TIME, 15000); mIdAlerta = intent.getStringExtra(Constants.ID_ALERTA_SERVICE); mVideoCount = intent.getIntExtra(Constants.COUNT_ALERTA, 1); Common.log("Video time" + mVideoTime); Common.getStorage().putBoolean(Constants.RECORDER_ACTIVE, true); initRecording(); } return START_NOT_STICKY; } public void initRecording() { Common.log("INIT RECORDING IN"); surfaceView = new SurfaceView(this); windowManager.addView(surfaceView, mLayoutParams); surfaceView.getHolder().addCallback(this); Common.log("INIT RECORDING OUT"); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onDestroy() { Common.log("onDestroy Video"); PreferenceHelper preferenceHelper = PreferenceHelper.newInstance(RecorderService.this, Constants.USER_PREFERENCES); preferenceHelper.setBoolean(Constants.IS_RECORDING, false); try { camera.setPreviewCallback(null); } catch (Exception e){ Common.log("error setPrevieCallback" + (e.getMessage() != null ? e.getMessage() : "sin mensaje")); } try { muteSounds(false); } catch (Exception e) { Common.log(e.getMessage()); } try { Common.log("media recorder stop"); mediaRecorder.stop(); Common.log("media recorder reset"); mediaRecorder.reset(); Common.log("media recorder release"); mediaRecorder.release(); Common.log("media camera lock"); camera.lock(); Common.log("media camera release"); camera.release(); } catch (Exception e) { } Common.log("onDestroy Video"); Common.getStorage().putBoolean(Constants.RECORDER_ACTIVE, false); RecorderService.super.onDestroy(); System.exit(0); } @Override public void surfaceCreated(SurfaceHolder holder) { mSurfaceHolder = holder; Common.log("SurfaceCreated"); try { try { muteSounds(true); } catch (Exception e) { Common.log(e.getMessage()); } Common.log("CAMERA OPEN 1"); try { camera = Camera.open(1); } catch (RuntimeException e) { Common.log(e.getMessage()); } Common.log("CAMERA OPEN 2"); /////////////////////////// mCamCoderProfile = CamcorderProfile.get(1, CamcorderProfile.QUALITY_LOW); mCamCoderProfile.videoCodec = MediaRecorder.VideoEncoder.MPEG_4_SP; mCamCoderProfile.audioCodec = MediaRecorder.AudioEncoder.AAC; /////////////////////////// startRecorder(); } catch (Exception e) { if (e.getMessage() != null) Common.log(e.getMessage()); } } public void muteSounds(boolean mute) { Common.log("MUTE SOUNDS IN"); AudioManager mgr = ((AudioManager) getSystemService(Context.AUDIO_SERVICE)); mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (mute) { mgr.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_MUTE, 0); mgr.adjustVolume(AudioManager.ADJUST_MUTE, 0); mgr.adjustVolume(AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE, 0); } else { mgr.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_UNMUTE, 0); mgr.adjustVolume(AudioManager.ADJUST_UNMUTE, 0); } } else { mgr.setStreamMute(AudioManager.STREAM_SYSTEM, mute); mgr.setStreamMute(AudioManager.STREAM_MUSIC, mute); if (mute) { mOlderVolumen = mgr.getStreamVolume(AudioManager.STREAM_RING); mgr.setStreamVolume(AudioManager.STREAM_RING, 0, 0); } else mgr.setStreamVolume(AudioManager.STREAM_RING, mOlderVolumen, 0); mgr.adjustVolume(AudioManager.ADJUST_LOWER, 0); } Common.log("MUTE SOUNDS OUT"); } public void startRecorder() { mediaRecorder = new MediaRecorder(); camera.unlock(); mediaRecorder.setCamera(camera); mediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setProfile(mCamCoderProfile); videoFile = new File(Environment.getExternalStorageDirectory() + "/" + "wbunker_" + mIdAlerta + "_" + mVideoCount + ".mp4"); Common.log("Video rercorder name file " + videoRecording); mediaRecorder.setOutputFile(videoFile.getPath()); mediaRecorder.setOrientationHint(270); try { Common.log("mediaRecorder prepare"); mediaRecorder.prepare(); Common.log("mediaRecorder prepare"); } catch (Exception e) { } Common.log("mediaRecorder start"); mediaRecorder.start(); Common.log("mediaRecorder start"); Common.log("Estoy grabando macho"); } 

Cuando trato de detener el servicio de los servicios se detiene, pero la cámara no se lanza incluso matando a la aplicación. ¿¿Alguien me puede ayudar?? gracias por adelantado.

One Solution collect form web for “Grabación de errores en vídeos android”

En el método onDestroy () de su servicio reemplace camera.lock() por camera.unLock() y en el método startRecorder () reemplace camera.unLock() por camera.lock()

  • Control de la velocidad de reproducción de vídeo en android
  • Reproducir vídeo en el cuadro de diálogo android
  • Cómo grabar vídeo con audio sin el archivo de mezcla con pausa / reanudar Android
  • Android: Vista de vídeo: cómo reproducir un video en un bucle
  • ¿Cómo puedo tomar una captura de pantalla de un video, en android
  • Android VideoView crop_center
  • Cómo obtener la velocidad de fotogramas de vídeo en Android OS?
  • Android reproducir película dentro del archivo de expansión
  • Android Camera PreviewCallback no se llama en 4.1
  • Eventos VideoView onTouch: pausar / reanudar vídeo y mostrar / ocultar MediaController y ActionBar
  • Android Video View no reproduce archivos MP4 en algunos dispositivos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.