2016-03-24 21 views
7

Attualmente sto affrontando un problema che posso risolvere da solo.Perché la mia videoview non sta giocando?

La mia applicazione Android (costruita per 4.2 e 4.4) funge da VideoPlayer. Ho inserito alcuni video nella directory dei file della mia app senza restrizioni (MODE_WORLD_READABLE) e il lettore li ha letti uno alla volta fino a quando non spengo il dispositivo o l'applicazione.

A volte, quando sto cercando di leggere un video locale utilizzando un VideoView il video non parte e il registro di stampa questo avvertimento:

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

A volte, il mediaplayer non lascia questo stato fino a quando non uccido la mia app (o riavvio il dispositivo).

E a volte, il registro continuano dopo l'avvertimento precedente, 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()..... 

Come il primo registro, dopo questo, nulla appened fino a quando ho ucciso mia app (o riavviare il dispositivo).

Inoltre, ho inserito alcune informazioni di registrazione per sapere se il callback preprato è attivato e questo è OK.

L'unico modo in cui ho trovato di riprodurre il video è riavviare il mio dispositivo quando si è verificato il problema.

Ecco il codice del mio lettore:

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(); 
     } 
    }); 

La mia domanda è: perché il mio VideoView non sta giocando in modo corretto tutto il tempo? Il problema appare a volte dopo 2 o 3h di esecuzione o talvolta all'avvio della mia app.

+0

è questo happenieng su altri telefoni? –

+0

Fino ad ora, abbiamo utilizzato un solo tipo di dispositivo perché è per una soluzione dedicata, ma al momento stiamo provando con un tablet. Ti darò feedback in alcune ore. Grazie per i tuoi interessi. – naike

+0

Suppongo che potrebbe esserci un problema con l'implementazione di VideoView stessa http://www.piterwilson.com/blog/2014/03/11/android-mediaplayer-not-quite-there-yet/ Se fossi in te lo farei un po 'più di ricerche che cambiano la versione di build di sdk a quelle più recenti. Forse Google ha già risolto questo problema. –

risposta

1

Codice 701 significa che il mediaplayer è il buffering più dati e mettere in pausa temporaneamente la riproduzione, questo è normale

public static final int MEDIA_INFO_BUFFERING_START

MediaPlayer è in pausa temporaneamente la riproduzione internamente per tampone più dati

Constant Value: 701 (0x000002bd)

problema principale è il codice di errore 950

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

codice di errore 950 cade sotto il ramo 9xx di codici di errore come descritto qui: What does MediaPlayer info/warning (973, 0) mean?

L'errore potrebbe essere con il file che stai cercando di riprodurre, piuttosto che il dev ghiaccio o il tuo codice. Vi sono ulteriori informazioni in questo SO question.

Provare anche a segnalarlo come un errore come this one in quanto sembra non esserci documentazione adeguata e passaggi concreti per risolvere l'errore.

Problemi correlati