使用 LibVLC MediaPlayer.Event.EndReached 在播放结束时重置 MediaPlayer
Utilising LibVLC MediaPlayer.Event.EndReached to reset MediaPlayer when playback finishes
我正在编写一个 Android 应用程序 activity,其中包含一个 LibVLC MediaPlayer 实现。 MediaPlayer
在大多数情况下工作正常,但是在视频结束时,MediaPlayer
将变得无响应。 根据我的研究,这看起来可能是因为媒体在 MediaPlayer.Event.EndReached
触发 (vajehu) 时变得不稳定。
我一直在关注 MediaPlayer.getPlaybackState()
并且可以看到 MediaPlayer
对象处于 "Ended" 状态回放如期结束。
我可以继续释放我的 MediaPlayer
并在 MediaPlayer.Event.EndReached
被触发时重新创建它,但我不确定这是否是一个好的做法。我希望 MediaPlayer
回到视频的开头并等待用户输入以再次开始播放。
(以防万一 - 我正在使用 MrMaffen's vlc-android-sdk)。
从那以后,我发现了一个整洁(更重要的是高效!)的解决方案;
在MediaPlayer.Event.EndReached
开火后我:
- 调用
MediaPlayer.setMedia(media)
重新加载Media
对象
- 重置一些与我的
MediaPlayer
有关的 UI 元素
- 最后,我使用
MediaPlayer.setTime(0)
将 MediaPlayer
位置设置为 Media
对象的开头
旁注: 因为 LibVLC 的 MediaPlayer.setTime(Long position)
方法没有效果,除非 MediaPlayer.isPlaying()
,我需要编写一个小的包装方法来异步:
MediaPlayer.play()
等待 MediaPlayer.isPlaying()
- 然后
MediaPlayer.setTime(0)
- 终于
MediaPlayer.pause()
一个比我预期的简单得多的解决方案,尽管我希望这能帮助那些在处理相同类型的项目时可能会摸不着头脑的人。
我正在编写一个 Android 应用程序 activity,其中包含一个 LibVLC MediaPlayer 实现。 MediaPlayer
在大多数情况下工作正常,但是在视频结束时,MediaPlayer
将变得无响应。 根据我的研究,这看起来可能是因为媒体在 MediaPlayer.Event.EndReached
触发 (vajehu) 时变得不稳定。
我一直在关注 MediaPlayer.getPlaybackState()
并且可以看到 MediaPlayer
对象处于 "Ended" 状态回放如期结束。
我可以继续释放我的 MediaPlayer
并在 MediaPlayer.Event.EndReached
被触发时重新创建它,但我不确定这是否是一个好的做法。我希望 MediaPlayer
回到视频的开头并等待用户输入以再次开始播放。
(以防万一 - 我正在使用 MrMaffen's vlc-android-sdk)。
从那以后,我发现了一个整洁(更重要的是高效!)的解决方案;
在MediaPlayer.Event.EndReached
开火后我:
- 调用
MediaPlayer.setMedia(media)
重新加载Media
对象 - 重置一些与我的
MediaPlayer
有关的 UI 元素
- 最后,我使用
MediaPlayer.setTime(0)
将
MediaPlayer
位置设置为 Media
对象的开头
旁注: 因为 LibVLC 的 MediaPlayer.setTime(Long position)
方法没有效果,除非 MediaPlayer.isPlaying()
,我需要编写一个小的包装方法来异步:
MediaPlayer.play()
等待MediaPlayer.isPlaying()
- 然后
MediaPlayer.setTime(0)
- 终于
MediaPlayer.pause()
一个比我预期的简单得多的解决方案,尽管我希望这能帮助那些在处理相同类型的项目时可能会摸不着头脑的人。