【发布时间】:2010-11-17 02:58:05
【问题描述】:
我有一个活动(比如活动 A),它使用媒体播放器显示视频,在表面视图中呈现。
用例是暂停视频,开始另一个活动(比如活动 B),然后返回活动 A。
Activity A 在去 B 的时候停止但没有销毁,这很好。
表面视图(因为不可见)被破坏(从通知回调中观察到)。
当回到活动 A 并使用 start() 重新启动媒体播放器时,媒体播放器会播放音频,但看不到视频。 Logcat 上会输出类似这样的错误:
11-16 18:14:44.532: ERROR/Overlay(8630): Error = Invalid argument from qbuf
不幸的是,使用 surfaceCreated() 提供的 SurfaceHolder 的新实例并没有帮助(即提供相同的错误)。
我在各种帖子中阅读了一个解决方案,即重置 mediaplayer 并完全重新启动它,但是效率不高,因为最终用户必须在流中等待整个播放器准备 cycle + seekTo last position .
从音频播放的事实可以看出,这应该是视频解码器和新的surfaceholder/view 之间的管道问题。
在恢复活动时恢复视频播放的最佳解决方案(最佳 = 最快)应该是什么?
【问题讨论】:
标签: android video media-player surfaceview