gpt4 book ai didi

Android VideoView 按顺序开始大量视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:24 29 4
gpt4 key购买 nike

我正在不停地测试它大约三天。

这是简单的代码:

private VideoView videoView;

--

videoView = (VideoView) findViewById(R.id.videoView);

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
getNewVideo();
}
}
});

getNewVideo();

--

private void getNewVideo(){
File file = //Any File. I have a list of files and they are executed in order
videoView.stopPlayback();
videoView.setVideoPath(file.getPath());
videoView.start();
}

--

<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />

我需要 24/7 全天候执行此代码。

问题是,与持续时间无关(在刚开始时,或运行 20 分钟后),有时视频会卡住。没有日志,没有异常,我唯一知道的是在卡住之前运行的最后一件事是 onPrepared()。

所有尝试调用视频的日志都是相同的,唯一的区别是最后一次尝试(卡住的尝试)在执行准备就绪后停止。

欢迎任何提示。

我使用的内部版本号是 RKM MK902_ANDROID5.1.1-20151016.1805

使用 RKM MK902II Android PC 设备,在 42 英寸电视屏幕上运行

最佳答案

我没有太多播放本地视频文件的经验(我认为这是因为你的代码说你有一个“按顺序执行的文件列表”),但是......

根据我的经验,在 VideoView 正确初始化媒体之前,您不应该调用 videoView.start()

当您调用 videoView.setVideoPath("path") 时,VideoView 将执行一些初始化程序来加载媒体。在 VideoView 加载/初始化媒体后,它将调用其 onPreparedListener 回调(如果您已设置)。只有当 VideoView 调用此回调时,您才应调用 VideoView.start() 开始视频播放。

所以...当您在 VideoView 上设置 onCompletionListener 时...您还应该设置一个 onPreparedListener。当 VideoView 向您的类(class)报告它已准备就绪时......调用 VideoView.start() 开始播放。

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
videoView.start();
}
}
});

此外,在我的代码中,我在重新使用 VideoView 播放后续视频之前调用了 VideoView.suspend()。尝试在 getNewVideo() 方法的开头添加对 VideoView.suspend() 的调用。

关于Android VideoView 按顺序开始大量视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42309047/

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