我正在尝试创建一个将Mediaplayer绑定到其中的自定义视图。我想要发生的是,一旦第一帧在屏幕上呈现,MediaPlayer将暂停一两秒,然后完成视频。我试图找出第一帧何时出现在屏幕上时遇到问题。我尝试过使用:
MediaPlayer.start()然后在Mediaplayer.pause()之后 - 这不起作用,因为系统需要时间加载视频,当我这样做时屏幕是黑色的。
OnBufferingUpdateListener - 不起作用,因为它只适用于来自互联网的视频
OnInfoListener MEDIA_INFO_VIDEO_RENDERING_START - API为17,而且太高了。
自定义视图中的onDraw - 目前正在测试,我不知道如何知道何时绘制视频帧。
我目前正在做的是在我的代码中设置一个计时器,等待50毫秒,然后一旦计时器完成暂停视频一段时间。但是,这只是一个快速解决方案而不是长期解决方案。
我认为解决此问题的唯一方法是设置某种自定义侦听器,或者使用在视频帧出现在屏幕上时调用的方法。但是,我的问题是我不知道该听什么,我还没有找到一个在视频开始播放时调用的方法。因此,非常感谢任何帮助解决这个问题。
答案 0 :(得分:1)
你纠正了:
mediaPlayer.start();
mediaPlayer.pause();
不会在第一帧停止。
mediaPlayer.seek(0);
更新并显示第一帧,并使其处于暂停状态。
答案 1 :(得分:0)
我有类似的要求(min API lvl 15,显示第一帧然后暂停)。
我最终使用https://stackoverflow.com/a/17450763/968451的答案,并在onSurfaceTextureUpdated
方法中添加了一些代码,以便在第一次调用时暂停MediaPlayer
。