Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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 …

  • Android: silencie el micrófono mientras graba vídeo
  • Archivo de vídeo sdk cut / trim de Android
  • Cómo seleccionar el video de la galería y recortar / cambiar el tamaño, al igual que el recorte de imágenes en android
  • Cómo tomar imágenes de vídeo o imágenes fijas desde el mismo botón utilizando Android Camera Intent
  • Reproducción de vídeo en pantalla completa
  • La parada del mediarecorder de Android falló
  • 2 Solutions collect form web for “Cómo convertir datos de video en base64”

    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

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.