MEDIA_ERROR_SERVER_DIED是什么意思?

时间:2011-12-02 06:33:28

标签: android error-handling android-mediaplayer

Android docs中,有一个常量定义的MEDIA_ERROR_SERVER_DIED,描述如下:

  

媒体服务器死了。在这种情况下,应用程序必须释放MediaPlayer对象并实例化一个新对象。

这看起来很模糊。媒体服务器死了是什么意思?为什么会死?通过立即尝试再玩一次来处理它是否合适?

3 个答案:

答案 0 :(得分:11)

在Android中,大多数媒体活动(解码/编码)都发生在mediaserver中,除非在有限的情况下,例如使用软件编解码器播放本地文件。 Android mediaserver会定期崩溃(中止)硬件错误,格式错误的文件或数据。对,对不起!

由于许多活动共享一个共同的mediaserver,因此任何活动中的错误都可能导致mediaserver崩溃。这种情况最常发生在后台活动(如媒体扫描程序或Google+自动特辑电影)尝试扫描损坏或仅支持的文件时。发生这种情况时,使用mediaserver的其余进程会收到通知。在MediaPlayer或MediaRecorder的情况下,此通知将传递给应用程序。

当mediaserver死亡时,会立即重新启动。即使服务器死了,应用程序上的代理对象仍然存在并且正在使用资源。因此需要释放对象。在通知之后立即创建一个新的应该是安全的。

答案 1 :(得分:1)

导致此问题的一个条件是MediaPlayer未接收或停止从服务器接收视频流。如果错误一直发生(即,如果根本没有收到任何视频),您可能希望确保没有任何内容(防火墙,VPN等)阻止您到服务器的路由。

答案 2 :(得分:-2)

这意味着您正在流式传输的服务器意外结束了连接。它可能发生,通常与“按对等方重置连接”错误有关。

您可以尝试重新连接是,也许等待一会儿。