¿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.
- Buscando en YouTube HTML5 video sobre Android WebView
- Reproducción de vídeo en android directamente desde el servidor
- Vídeo con iframe no se muestra en la vista web de Android
- Renderizado de vídeo en una textura en LibGDX
- Limitaciones de la captura de video en la brecha del teléfono + complementos nativos
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.
- Cómo vivir la transmisión desde Android
- Android, ¿cómo puedo eliminar los controles de VideoView?
- Android tira audio de vídeo
- Android: Jcodec: codificación de archivos de imagen para vídeo .mp4
- Guardar el primer y el último fotograma de un vídeo como una imagen en Android
- Reproducción de vídeo local en WebView en Android
- Tableta Android con vídeo incorporado pierde video en rotación
- Grabar y reproducir vídeo en directo en android
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.
- Cómo crear una sombra de arrastre personalizada?
- ¿Cómo ejecutar una función de Android cada 15 minutos, y específicamente en la marca de 15 minutos todos los días?