如何通过 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 中启动的实时时间?的主要内容,如果未能解决你的问题,请参考以下文章

在 android 视频视图中流式传输视频

从表视图选择中播放视频 URL

HTML5 将 youtube 速度从 url 提高 2 倍?

如何从视频 URL 获取视频的 PHAsset?

如何知道 youtube 视频何时开始播放以及何时在 ios 的 web 视图中按下 mpmovieplayer 的完成按钮

如何在 react-native 中处理列表视图内的视频视图播放