Xamarin Android Player – No se puede reproducir este vídeo

Estoy usando VideoView de Android para reproducir un video incrustado en mi aplicación. Funciona bien en mi dispositivo, pero sigo recibiendo un mensaje de "No puedo reproducir este video" y una pantalla en negro en el reproductor de Android de Xamarin.

mensaje de error

El registro de errores correspondiente tiene este aspecto:

Unable to play video [MediaPlayer] Error (1,-38) [VideoView] Error: 1,-38 

He encontrado algunos mensajes sobre este error, pero ninguno de ellos me ayudó a resolver este problema y no soy capaz de encontrar una descripción adecuada para este código de estado.

Mi código C # se ve así:

 videoView = new VideoView (Context); base.SetNativeControl (videoView); videoView.SetOnErrorListener (new ErrorListener ()); string fileName = e.NewElement.FileSource; fileName = fileName.ToLower ().Substring (0, fileName.LastIndexOf (".")); int resourceID = Context.Resources.GetIdentifier (fileName, "raw", Context.PackageName); var fullPath = String.Format ("android.resource://{0}/{1}", Context.PackageName, resourceID); videoView.SetVideoPath (fullPath); videoView.RequestFocus (); videoView.Start (); 

Parece ser un problema con el tipo de codificación que soporta el emulador, si instalas ffmpeg, si estás en un mac ejecutando estos comandos:

 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew install ffmpeg 

Luego procese su archivo de vídeo con:

 ffmpeg -i big_buck_bunny_720p_1mb.mp4 -c:v libx264 -profile:v baseline -c:a aac -strict -2 -b:a 128k output.mp4 

Y tratar de reproducir la salida que no mostrará ese error, pero será un video en blanco (sólo una pantalla en negro). Así que creo que el problema es sólo conseguir la codificación correcta, han intentado algunas codificaciones diferentes, pero todo parece que sólo muestran una pantalla en negro.

Va a hacer un poco más de excavación, pero por el momento parece ser sólo el emulador no es compatible con la codificación.

EDITAR

Ok, así que tengo el vídeo funcionando, procesé el video con:

 ffmpeg -i SampleVideo_1080x720_1mb.mp4 -codec:v libx264 -profile:v baseline -preset slow -b:v 250k -maxrate 250k -bufsize 500k -vf scale=-1:360 -threads 0 -codec:a aac -strict -2 -b:a 96k output.mp4 

Compruebe en este sitio los parámetros de ffmpeg. He configurado mi VideoView así:

 public class Activity1 : Activity { VideoView videoView; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); videoView = FindViewById<VideoView> (Resource.Id.SampleVideoView); videoView.SetMediaController(new MediaController(this)); videoView.SetVideoPath ($"android.resource://{PackageName}/{Resource.Raw.output}"); videoView.RequestFocus (); videoView.Start (); } } 

Esto parece funcionar en el Xamarin Android Player, pero sólo para las versiones API 16 (JellyBean) y 19 (Kitkat). 21 (piruleta) simplemente no carga el video.

Luego descargé el GenyMotion Emulator (necesito crear una cuenta pero es gratis para uso personal) para comprobar si era el Xamarin Player o no. Funciona en todos (16,17,18,19,20 + 22) aparte de 21 (piruleta). Parece que algo está mal con los emuladores de 21, hice todas mis pruebas en el nexo 4 emuladores. Así que si quieres tot est reproducción de vídeo intentaría evitar emuladores con API 21.

Diferentes versiones de SO Android soportan diferentes combinaciones de codificaciones de audio y video dentro del contenedor de video. Así que depende de la versión que su reproductor de Android está emulando. Para la tabla vea http://developer.android.com/guide/appendix/media-formats.html#core

  • DllNotFoundException en la aplicación de Android de NDK usando Xamarin
  • Pase objetos personalizados a la siguiente actividad en Xamarin Android
  • ¿Cómo ejecutar pruebas de unidad para proyectos de biblioteca de Xamarin (iOS y Android)?
  • Resource.designer.cs NO se está regenerando en Mono (Xamarin Studio)
  • Xamarin, Android. Cada vez que ejecute la aplicación en el dispositivo, la aplicación se unistalled y luego se instala de nuevo.
  • Búsqueda de un "PaintCode" para android
  • Xamarin AndroidManifest.xml es diferente al de Visual Studio
  • El enlace MvvmCross Fragment no funciona
  • Obtenga el contexto de Android en el proyecto PCL
  • Problema al instalar el paquete NuGet Xamarin
  • Uso del depurador de Microsoft con Xamarin Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.