gpt4 book ai didi

Android VideoView - 如何按顺序播放视频

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

我正在尝试开发一个 android 应用程序,它可以在一个视频 View 中播放多个视频。一个完成后,第二个必须开始,依此类推。

我的视频存放在项目的raw文件夹中,获取他们的文件名我这样做:

Field[] fields = R.raw.class.getFields();

final List<String> videoNames = new ArrayList<String>() ;

for(Field field: fields){
videoNames.add(field.getName());
}

然后我将第一个路径设置为我的视频 View

 videoUri = Uri.parse("android.resource://" + getActivity().getPackageName() + "/" 
+ videoNames.get(0));

myVideoView.setVideoURI(videoUri);

和其他人一起玩

    myVideoView.setOnCompletionListener(new   MediaPlayer.OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer mp) {


videoUri = Uri.parse("android.resource://" + getActivity().getPackageName() + "/"
+ videoNames.get(VideoI));
myVideoView.setVideoURI(videoUri);

myVideoView.start();

if(VideoI==videoNames.size()-1)
{
VideoI=0;
}
else{
VideoI++;
}
}
});

但是...

每次我在真实设备上尝试这段代码,我都会得到同样的错误第一个视频播放完毕后“无法播放视频”...

所有视频都是用我开发时使用的同一设备录制的.mp4 文件...

有什么想法吗?或其他按顺序播放更多视频的方法?我到处寻找解决方案,但找不到..

编辑

做到了!!好的..错误太愚蠢了..谢谢大家的有用答案。

错误出在我正在寻找的路径中(“这些不是您要寻找的路径”引用。)

如我所写,视频存储在原始文件夹中..我在用

 videoUri = Uri.parse("android.resource://" + MainActivity.ctx.getPackageName() + "/
+ videoNames.get(VideoI));

在路径中添加原始文件夹

videoUri = Uri.parse("android.resource://" + MainActivity.ctx.getPackageName() + "/raw/" 
+ videoNames.get(VideoI));

它终于奏效了..正如我所写的..这是一个愚蠢的..

最佳答案

您收到错误消息是因为您试图在重置之前再次初始化 videoview。像这样更改您的代码。

myVideoView.setOnCompletionListener(new   MediaPlayer.OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer mp) {

startOtherVid();
}
});

现在 make 方法 startOtherVid() 并在释放前一个后在这里初始化 videoview。

private void startOtherVid(){
myVideoView.stopPlayback();
videoUri = Uri.parse("android.resource://" + getActivity().getPackageName() + "/"
+ videoNames.get(VideoI));
myVideoView.setVideoURI(videoUri);

myVideoView.start();
....
.....
}

这样您将释放一个videoview 对象并再次创建。加载时间会很短,但您可以直观地处理它。

编辑

您也可以释放媒体播放器对象并解决您的问题。

public void onCompletion(MediaPlayer mp) {

try {
mp.reset();
videoUri = Uri.parse("android.resource://" + getActivity().getPackageName() + "/"
+ videoNames.get(VideoI));
myVideoView.setVideoURI(videoUri);

myVideoView.start();
}
catch(Exception e){e.printstacktrace();}
});

干杯。:)

关于Android VideoView - 如何按顺序播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21549700/

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