gpt4 book ai didi

android - VideoView 循环播放视频 补充

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:59:01 34 4
gpt4 key购买 nike

我有一个带有 VideoView 的应用程序,它将不断循环播放相同的视频,直到用户对设备(触摸屏等)进行操作为止。目前,我正在使用 OnCompletionListener() 在视频结束后重新启动视频。这在我测试过的每台设备上都能正常工作,除了 Samsung Replenish。

这是我的代码:

    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mVideoView.setVideoPath(file.getAbsolutePath());
mVideoView.start();
}
});

Replenish 发生的情况是视频一直播放一次,但之后再也没有开始播放,屏幕全黑(但背光灯仍然打开)。在我用完全相同的代码测试过的所有其他设备上,它都可以重复播放视频。有谁知道有关 Replenish 的任何具体信息可能会导致此错误?我认为也许将对 setVideoPath() 和 start() 的调用延迟 200-300 毫秒可能会有所帮助,但这没有任何影响。我在这里真的很茫然。

我在我的日志中看到这些消息:

ERROR/QCvdec(87): Omx Flush issued when vdec is not initialized yet.

ERROR/QCvdec(87): OMXCORE-SM:Recieved command DISABLE (2)

ERROR/QCvdec(87): Omx Flush issued when vdec is not initialized yet.

ERROR/QCvdec(87): OMXCORE-SM:Recieved command ENABLE (3)

但是这些日志在视频开始播放(第一次播放)和再次播放失败时都会发生。所以我不确定它们是否与我的问题有关

编辑:

我刚刚尝试将 mVideoView 设置为 null,然后在 setVideoPath() 之前使用 findViewById() 获取对它的新引用。我知道这会使 OnCompletionListener 的设置方式复杂化。但无论如何它都没有用,仍然是同样的黑屏。

编辑 2:

我开始注意到有时视频甚至没有在第一次开始播放。我第一次使用这两行来启动它:

        mVideoView.setVideoPath(file.getAbsolutePath());
mVideoView.start();

它似乎开始比较稳定,但第一次播放时并不是 100%。

编辑 3:这就是我现在的设置方式。我正在手动设置 OnPreparedListener 来为我启动视频。所以我将它添加到我的 onCreate()

        mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

@Override
public void onPrepared(MediaPlayer arg0) {
mVideoView.start();
}
});

然后,当我准备好重新开始播放视频时,我只需调用 setVideoPath() 方法,如下所示:

mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mVideoView.setVideoPath(file.getAbsolutePath());

}
});

这似乎可以解决问题。不过,我让它运行了一段时间,以便确定。

编辑 4:

@MByD 在 VideoView setVideoPath() 的代码中是 setVideoUri() 的包装器。 setVideoURI() 正在设置 mStartWhenPrepared = false; 默认的 OnPreparedListener 检查此开关以决定是否开始播放。这就是为什么它不以默认监听器开头的原因。我没有深入研究它,但可能有一个 setter 方法可以让我将 mStartWhenPrepared 值更改为 true,这会导致视频从默认监听器启动。

最佳答案

您是否尝试过在调用 .start() 之前准备好您的视频?

来自文档:http://developer.android.com/reference/android/media/MediaPlayer.html#prepare%28%29

带有 OnPreparedListener您可以在视频准备就绪后开始播放。

关于android - VideoView 循环播放视频 补充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011534/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com