VideoView 添加多个视频并播放

Posted

技术标签:

【中文标题】VideoView 添加多个视频并播放【英文标题】:VideoView Add a multiple videos and play 【发布时间】:2015-12-09 07:53:36 【问题描述】:

让我们假设 SD 卡或内部存储中有 5 个视频。 现在我已经获得了文件路径,我的问题是如何在 VIDEO VIEW 中插入多个视频?

下一个或上一个按钮不起作用

这是我的代码

 public void getFile()


    urls = getIntent().getStringArrayListExtra("url_videoAll");
    keys = getIntent().getStringArrayListExtra("key_videoAll");

    for(int i = 0; i<urls.size();i++) 
        String FileName = URLUtil.guessFileName(urls.get(0), null, MimeTypeMap.getFileExtensionFromUrl(urls.get(0)));
        String yourFilePath = getBaseContext().getFilesDir() + "/" + FileName;
        fileList.add(new File(yourFilePath));

    
    playallvideo(fileList);

在此代码中,如果我有 5 个视频,那如何?

private void playallvideo(final List<File> file)
    
    mediaController = new MediaController(this);

    video.setMediaController(mediaController);
    video.setVideoPath(file.get(0).toString());
    video.start();

    mediaController.setPrevNextListeners(new View.OnClickListener() 
        public void onClick(View v) 
            video.setMediaController(mediaController);
            video.setVideoPath(file.get(1).toString());
            video.requestFocus();
            video.start();
            // code for next
        
    , new View.OnClickListener() 
        public void onClick(View v) 
            video.setMediaController(mediaController);
            video.setVideoPath(file.get(1).toString());
            video.requestFocus();
            video.start();
            // code for previous
        
    );

我需要这个,因为我将使用 MediaController 并按下下一个视频

【问题讨论】:

【参考方案1】:

您可以使用计数器并在第一个视频停止播放后立即增加它的值。这可以通过使用MediaPlayer.OnCompletionListener 来实现。

以下对我有用:

private static int currentVideo = 0;
private List<String> fileData = new ArrayList<String>();

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
    @Override
    public void onCompletion(MediaPlayer mp) 
        if(!(currentPosition < fileData.size())) 
            return;
        
        Uri nextUri = Uri.parse(fileData.get(currentPosition++));
        videoView.setVideoURI(nextUri);
        videoView.start();
        //to keep looping into the list, reset the counter to 0.
        //in case you need to stop playing after the list is completed remove the code.
        if(currentPosition == fileData.size()) 
            currentPosition = 0;
        
    
);

虽然帖子太老了,无法回答,但最终来到这里的初学者开发人员会得到和我一样多的帮助。

【讨论】:

setOnCompletionListener 没有触发,即使循环设置为 false

以上是关于VideoView 添加多个视频并播放的主要内容,如果未能解决你的问题,请参考以下文章

SurfaceView/VideoView

VideoView 无法播放视频文件并显示媒体播放器错误

有趣的安卓视频播放器(VideoView)

视频播放-VideoVIew,Vitamio

在 VideoView 中从暂停状态播放视频

无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?