Cómo convertir datos de video en base64

Tengo una aplicación que tomar vídeo de cámara o galería y convertirlo en datos base64 y que los datos enviar al servidor, pero el problema es que cada vez que convertir datos base64 no será los datos correctos en la variable videodata. Para esto utilicé debajo del código:

FileInputStream objFileIS = null; try { System.out.println("file = >>>> <<<<<" + selectedImagePath); objFileIS = new FileInputStream(selectedImagePath); } catch (FileNotFoundException e) { e.printStackTrace(); } ByteArrayOutputStream objByteArrayOS = new ByteArrayOutputStream(); byte[] byteBufferString = new byte[1024]; try { for (int readNum; (readNum = objFileIS.read(byteBufferString)) != -1;) { objByteArrayOS.write(byteBufferString, 0, readNum); System.out.println("read " + readNum + " bytes,"); } } catch (IOException e) { e.printStackTrace(); } videodata = Base64.encodeToString(byteBufferString, Base64.DEFAULT); Log.d("VideoData**> " , videodata); 

Por favor, hágalo correcto …

Cuando codifica el byteBufferString , está codificando sólo el último fragmento de datos leídos. Debe codificar todo el contenido de ByteArrayOutputStream . Puede hacer esto con el siguiente código:

 videodata = Base64.encodeToString(objByteArrayOS.toByteArray(), Base64.DEFAULT); 

Sin embargo, existe la posibilidad de que esto puede OutOfMemoryError un OutOfMemoryError si el tamaño del video es grande.

Lo soluciono así:

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.d("Imagen este ", String.valueOf(data)); if(data!=null) { switch (requestCode) { case SELECT_VIDEO: Uri selectedVideoUri = data.getData(); String[] projection = {MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION}; Cursor cursor = managedQuery(selectedVideoUri, projection, null, null, null); cursor.moveToFirst(); String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)); Log.d("File Name:",filePath); Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MINI_KIND); // Setting the thumbnail of the video in to the image view msImage.setImageBitmap(thumb); InputStream inputStream = null; // Converting the video in to the bytes try { inputStream = getContentResolver().openInputStream(selectedVideoUri); } catch (FileNotFoundException e) { e.printStackTrace(); } int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; byteBuffer = new ByteArrayOutputStream(); int len = 0; try { while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } } catch (IOException e) { e.printStackTrace(); } System.out.println("converted!"); String videoData=""; //Converting bytes into base64 videoData = Base64.encodeToString(byteBuffer.toByteArray(), Base64.DEFAULT); Log.d("VideoData**> " , videoData); String sinSaltoFinal2 = videoData.trim(); String sinsinSalto2 = sinSaltoFinal2.replaceAll("\n", ""); Log.d("VideoData**> " , sinsinSalto2); baseVideo = sinsinSalto2; 

VideoData tiene el base64 del video .. Espero que sirva, trabajé perfecto

  • Android MediaCodec: Reduce el tamaño del video mp4
  • Uso de ambas cámaras en android: "No se puede conectar al servicio de cámara"
  • Programe para comprimir el video sin FFMPEG en Android
  • Recorte de vídeo antes de la codificación con MediaCodec para Grafika "Captura continua" Actividad
  • La parada del mediarecorder de Android falló
  • Maneras alternativas de establecer durationLimit o sizeLimit durante la grabación de vídeo?
  • Cómo incluir funciones FFMPEG en el código android
  • Android - Cómo iniciar la grabación de vídeo automáticamente cuando se llama a la cámara intención
  • Captura de cámara Android produce vídeo verde y bloque
  • H264 codificador en android?
  • La cámara Motorola Android 2.2 ignora el parámetro EXTRA_OUTPUT
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.