【发布时间】:2015-04-13 18:44:19
【问题描述】:
我在 Android 应用程序中使用 libvlc 0.9.9 已有一段时间了。它一直运行良好,除了 4.4 设备及以下在某些情况下调用 vlc.stop() 时挂起。看起来问题与此处的链接有关:http://comments.gmane.org/gmane.comp.video.videolan.vlc.devel/96116
我已尝试升级到最新版本并且一切正常,除了在设备轮换期间。这是我正在使用的策略。
我在 Activity 中使用了一个 reservedFragment。我正在retainedFragment 中创建vlc 播放器。在轮换时,我允许销毁活动,并重新附加retainedFragment。我这样做的原因是因为纵向和横向的视图完全不同。我更喜欢使用这种方法,而不是不允许破坏活动并且必须手动添加和删除纵向与横向视图。我也这样做是为了在等待新表面可用时保持视频在后台播放。
在 0.9.9 中,我可以在 SurfaceDestroyed 中调用 libvlc.detach(),在 SurfaceChanged() 中调用 libvlc.attachSurface(mSurface, this)。通过这样做,libvlc 会将自己附加到新创建的表面上。但是,我尝试过的新版本的 libvlc,包括最新版本,不会重新附加到新创建的表面。以下是日志中显示的示例。
04-13 14:05:18.860 14767-15341/com.sparc.stream E/Surface: dequeueBuffer failed (No such device) 04-13 14:05:18.860 14767-15341/com.sparc.stream W/VLC: [7d8909cc] yuv_rgb_neon filter: can't get output picture
我不确定是否有其他人正在使用保留片段方法,但如果是这样,如果你已经得到这个工作,你能分享一下吗?如果有帮助,我可以发布代码示例。
谢谢!
泰勒
【问题讨论】: