¿Por qué mi videoview no está reproduciendo?

Actualmente estoy enfrentando un problema que puedo resolver yo mismo.

Mi aplicación para Android (construida para 4.2 y 4.4) actúa como un VideoPlayer. He puesto algunos videos en el directorio de archivos de mi aplicación sin acceso de restricción (MODE_WORLD_READABLE) y el reproductor los lee uno por uno hasta que apague el dispositivo o la aplicación.

A veces, cuando estoy tratando de leer un video local usando un VideoView, el video no se inicia y el registro imprime esta advertencia:

03-24 12:10:50.493: W/MediaPlayer(12894): info/warning (701, 0) 

A veces, el reproductor de medios no abandona este estado hasta que yo mate mi aplicación (o reinicie el dispositivo).

Y a veces, el registro continúa después de la advertencia anterior con:

 03-24 14:07:07.775: E/FFMpegMediaPlayer(100): start in mCurrentState in 03-24 14:07:07.775: I/FFMpegMediaPlayer(100): ****************************************** 03-24 14:07:07.775: E/FFMpegMediaPlayer(100): start in mCurrentState = 8 03-24 14:07:07.775: I/FFMpegMediaPlayer(100): starting main player thread:2013-11-20 03-24 14:07:07.775: I/RkAudioPlayer(100): mAudioSink->open in mSampleRate = 48000 channels = 2 03-24 14:07:07.775: I/FFMpegMediaPlayer(100): ****************************************** 03-24 14:07:07.775: I/FFMpegMediaPlayer(100): mCurrentState = 8 03-24 14:07:07.775: I/(100): starting thread 03-24 14:07:07.775: D/AUDIO_DECOE(100): prepare() 03-24 14:07:07.785: I/AudioHardwareALSA(100): Audio exiting sandby will open audio device 03-24 14:07:07.895: E/ALSAModule(100): audio type flag: 0 03-24 14:07:13.465: D/FFMpegMediaPlayer(100): url_feof=1,err=0 03-24 14:07:13.465: I/FFMpegMediaPlayer(100): av_read_frame end of stream ret = -541478725 03-24 14:07:13.465: W/MediaPlayer(9652): info/warning (950, 0) 03-24 14:07:13.475: I/MediaPlayer(9652): Info (950,0) 03-24 14:07:13.475: E/ERROR : INFO MEDIAPLAYER(9652): what:950, extra:0 03-24 14:07:17.695: D/AudioHardwareALSA(100): AudioStreamOutALSA::standby()..... 

Como el primer registro, después de este, nada apareció hasta matar mi aplicación (o reiniciar el dispositivo).

Además, he puesto alguna información de registro para saber si la devolución de llamada onPrepared se dispara y esto es OK.

La única manera que encontré para reproducir el video de nuevo es reiniciar mi dispositivo cuando ocurrió el problema.

He aquí un código de mi reproductor:

  audioManager = (AudioManager) applicationContext.getSystemService(Context.AUDIO_SERVICE); //this is in the constructor of my singleton player //all the following code are encapsulated in a method which is called every time a new video must be play. setCompletionListener(); //in here I call videoview.stopPlayback(); and I recall this method to start another video setErrorListener(); //here too I call videoview.stopPlayback(); videoview.setVideoPath(applicationContext.getFilesDir() + "/" + myVideoFile.getFileName()); videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(final MediaPlayer mediaPlayer) { audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 90, 0); mediaPlayer.setVolume(12.0f, 12.0f); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0) mediaPlayer.start(); } }); 

Mi pregunta es: ¿por qué mi videoview no está jugando correctamente todo el tiempo? El problema aparece a veces después de 2 o 3h de ejecución oa veces en el arranque de mi aplicación.

El código 701 significa que el reproductor multimedia está almacenando en búfer más datos y pausando temporalmente la reproducción, esto es normal

Public static final int MEDIA_INFO_BUFFERING_START

MediaPlayer está pausando temporalmente la reproducción internamente para almacenar más datos.

Constant Value: 701 (0x000002bd)

El principal problema es el código de error 950

 info/warning (950, 0) I/MediaPlayer(9652): Info (950,0) E/ERROR : INFO MEDIAPLAYER(9652): what:950, extra:0 

El código de error 950 cae bajo la rama 9xx de códigos de error como se describe aquí: ¿Qué significa MediaPlayer info / warning (973, 0)?

El error podría ser con el archivo que está intentando reproducir, en lugar del dispositivo o su código. Hay más información en esta pregunta de SO .

También tratar de informar como un error como éste, ya que parece que no hay documentación adecuada y los pasos concretos para resolver el error.

  • PhoneGap Android - Reproducción de vídeos locales
  • Reproducción de vídeo nativa de Android con canal alfa
  • ¿Cómo usar la decodificación acelerada por hardware en Android?
  • Android: Copiar RawFile a Sdcard (video mp4)
  • Forzar el no-flash Vimeo incrustar o deshabilitar Flash en un WebView?
  • android-abrir la galería y elegir la imagen y el vídeo
  • SurfaceView sobre actionBar debido a setZOrderOnTop
  • Grabación de video en un buffer circular en Android
  • Reproductor de vídeo en android (desarrollar)
  • Android: no se puede reproducir vídeo mp4
  • Android: captura de video en dispositivo o emulador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.