如何通过 URL 的视频视图知道视频在 android VideoView 中启动的实时时间?
Posted
技术标签:
【中文标题】如何通过 URL 的视频视图知道视频在 android VideoView 中启动的实时时间?【英文标题】:How can I know the real time the video starts in android VideoView with the video view from URL? 【发布时间】:2017-07-27 11:43:20 【问题描述】:我正在尝试在视频播放时随机弹出一个小吃店,我已经获得了视频持续时间并且能够运行视频。我还能够设置处理程序以在视频持续时间内随机显示小吃店。
Uri uri2 = Uri.parse("my video link");
MediaPlayer mp = MediaPlayer.create(this, uri2);
int duration = mp.getDuration();
mp.reset();
mp.release();
mVideoView2.setVideoURI(uri2);
mVideoView2.requestFocus();
mVideoView2.start();
我只有一个问题。当我调用 videoview.start() 它不会立即启动视频,它有一些缓冲时间。我只想在视频播放期间随机显示小吃店。假设视频长度为 7 秒,我的随机时间为 3 秒,缓冲时间或预加载时间为 3 秒,则小吃栏出现在我的视频之前。有什么方法可以知道缓冲时间或视频何时准备就绪,以便我可以开始调用我的处理程序。
【问题讨论】:
我建议使用处理程序每秒检查玩家getCurrentPosition
的当前位置,然后如果getCurrentPosition
返回的值等于您的随机时间,则显示吐司。注意getCurrentPosition
以毫秒为单位返回时间。
【参考方案1】:
设置OnPreparedListener
以在视频加载时收到通知
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mp)
//play video... video is ready to play
);
【讨论】:
只需在onPrepared
方法中调用mVideoView2.start();
如果互联网连接不好,这将不起作用。播放器可能会因为连接而多缓冲一次或多次缓冲。那样的话,就有问题了。
onPrepared
在媒体文件准备好播放时被调用,所以如果互联网连接不好也没关系,因为媒体文件已经被缓冲了
@RichardKMaleho 实际上,它的工作方式与我调用 videoView.start() 的方式相同,感谢您的帮助。【参考方案2】:
查:https://developer.android.com/reference/android/media/MediaPlayer.OnInfoListener.html,主要是MEDIA_INFO_VIDEO_RENDERING_START
【讨论】:
以上是关于如何通过 URL 的视频视图知道视频在 android VideoView 中启动的实时时间?的主要内容,如果未能解决你的问题,请参考以下文章
HTML5 将 youtube 速度从 url 提高 2 倍?
如何知道 youtube 视频何时开始播放以及何时在 ios 的 web 视图中按下 mpmovieplayer 的完成按钮