SurfaceView, SurfaceTexture y MediaPlayer no pueden reproducir mi video en android

Estoy tratando de reproducir video en vivo en streaming de mi aplicación con SurfaceView , cuando lo intento con Vitamio que juega bien, pero como es un enlace HTTP, traté de deshacerse de cualquier biblioteca de terceros y había utilizado las clases nativas. He intentado VideoView como lo hago siempre, entonces intenté la aplicación básica de SurfaceView después del fracaso He intentado el video de la textura como esto:

 @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { Surface surface = new Surface(surfaceTexture); try { mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(getApplicationContext(), Uri.parse(link)); mMediaPlayer.setSurface(surface); mMediaPlayer.setLooping(true); mMediaPlayer.prepareAsync(); // Play video when the media source is ready for playback. mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); } }); mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { Log.d(TAG, "Error occured"); return false; } }); } catch (IllegalArgumentException e) { Log.d(TAG, e.getMessage()); } catch (SecurityException e) { Log.d(TAG, e.getMessage()); } catch (IllegalStateException e) { Log.d(TAG, e.getMessage()); } catch (IOException e) { Log.d(TAG, e.getMessage()); } } 

Pero no hay suerte cada vez OnError de MediaPlayer se llama y en el logcat consigo esto:

 06-28 16:00:56.612 144-8044/? E/GenericSource﹕ Failed to prefill data cache! 06-28 16:00:56.614 7997-8016/? E/MediaPlayer﹕ error (1, -2147483648) 06-28 16:00:56.614 7997-7997/? E/MediaPlayer﹕ Error (1,-2147483648) 

Pero la cosa es que no hay ningún problema con la URL, esta url está jugando bien en vitamio y todos los otros playes que podría probar, por favor ayuda!

He tenido mi propio dolor tratando de obtener vídeo para jugar en Android a través de MediaPlayer y también he probado Vitamio también. La mayoría de las veces, si un video no se reproduce correctamente en MediaPlayer de Android fue porque no era de un formato compatible.

http://developer.android.com/guide/appendix/media-formats.html

Esto puede no ser la respuesta que desea, pero es probable que tenga que volver a codificar lo que está intentando reproducir a un formato compatible. Las capacidades de reproducción de vídeo de Android son mucho más débiles que las del iPhone, y esto es algo que tendrás que aceptar.

Si en cambio estás dispuesto a poner (mucho) más trabajo, puedes compilar ffmpeg tú mismo para android, hacer una interfaz jni a sus muchos componentes y reproducir videos en la vista de superficie / textura. Yo personalmente no recomiendo esta ruta como mi experiencia con streaming de vídeo 1080p a través de ffmpeg no fue genial.

Su mejor y más fácil apuesta es simplemente volver a codificar sus videos.

Fondo: Hice una aplicación que reproduce hasta 5 videos silmutaniously de una variedad de vendedores.

Parece ser uno de 2 problemas. El formato es incorrecto o hay problemas de permisos con el archivo y no puede abrirlo.

Primero convierte el video usando ffmpeg . Yo uso este comando para convertir a un stream-able mp4:

Ffmpeg -i InputVideo.mp4 -c: v libx264 -profile: v línea de base -c: a libfaac -ar 44100 -ac 2 -b: a 128k -movflags faststart OutputVideo.mp4

En segundo lugar, intente cargar el video como un archivo primero y luego pase la fuente de datos al reproductor multimedia. Esto es necesario a veces como he notado que cuando se utiliza MediaPlayer para abrir el archivo que desencadena una llamada a nivel de sistema operativo para cargar el archivo mientras el archivo está en la carpeta privada de aplicaciones y por lo tanto no puede ser abierto por el sistema operativo. Lo hacemos así:

 AssetFileDescriptor afd = contxt.getResources().openRawResourceFd(R.raw.prepare_artwork); if (afd == null) { Log.e(TAG, "Failed to load video."); } else { mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); afd.close(); } 
  • Muestra una fuente de video de gstreamer en Google Cartón SurfaceTexture
  • Phonegap: ¿Es posible reproducir varios videos simultáneamente en la misma página usando etiqueta de vídeo html5?
  • Nexus 6 y MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
  • Android no puede reproducir vídeo H264 / AAC
  • Utilice Video chat en segundo plano como Skype usando WebRTC en Android
  • Android cámara2 api galaxia s7
  • Extraer / modificar marcos de video en Android
  • Buscando un ejemplo de trabajo de addTimedTextSource para agregar subtítulos a un video desde un archivo .srt en Android 4.1
  • Cámara Android: la vista previa se amplía al grabar vídeo
  • Cómo encontrar y reproducir videos descargados por Lynda.com Aplicación para Android o Windows
  • ¿Qué es AwesomePlayer en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.