2011-12-02 24 views
18

Nel Android docs, v'è una costante definita MEDIA_ERROR_SERVER_DIED che viene descritto come: ServerChe cosa significa MEDIA_ERROR_SERVER_DIED?

media morto. In questo caso, l'applicazione deve rilasciare l'oggetto MediaPlayer e creare un'istanza nuova.

Questo sembra molto vago. Cosa significa che il server multimediale è morto? Perché dovrebbe morire? Ed è corretto gestirlo cercando immediatamente di giocare di nuovo in seguito?

risposta

8

In Android, la maggior parte dell'attività multimediale (decodifica/codifica) si verifica nel mediaserver, tranne in casi limitati, come la riproduzione di file locali tramite il codec software. Il mediaserver Android si blocca di routine (si interrompe) su errori hardware, file o dati formattati in modo errato. Si scusa!

Poiché molte attività condividono un server medias comune, un errore in qualsiasi attività può causare l'arresto anomalo di mediaserver. Questo accade più comunemente quando un'attività di background, come media scanner o Auto-Awesome Movies di Google+ tenta di eseguire la scansione di un file corrotto o appena non supportato. Quando ciò accade, i rimanenti processi che hanno utilizzato mediaserver ricevono una notifica. Questa notifica viene passata all'app in caso di MediaPlayer o MediaRecorder.

Quando il mediaserver muore, viene immediatamente riavviato. Anche se il server muore, l'oggetto proxy sull'applicazione è ancora attivo e utilizza le risorse. Da qui la necessità di rilasciare l'oggetto. Dovrebbe essere sicuro crearne uno nuovo immediatamente dopo la notifica.

-2

Significa che il server da cui si sta eseguendo lo streaming ha interrotto in modo imprevisto la connessione. Può succedere, in genere è correlato a un errore "Connessione ripristinata tramite peer".

Si potrebbe provare a riconnettersi si, forse dopo aver atteso un po '.

1

Una condizione che provoca ciò è quando MediaPlayer non riceve o interrompe la ricezione del flusso video dal server. Se l'errore si verifica costantemente immediatamente (ad esempio, se nessuno dei video viene ricevuto), è necessario assicurarsi che nulla (firewall, VPN, ecc.) Blocchi il percorso verso il server.