创建自动播放视频播放列表

时间:2016-10-09 15:30:39

标签: android android-mediaplayer

我是一名网络开发人员,负责制作应该是一个相当简单的应用程序。我对Android开发没有多少经验,所以原谅可能是愚蠢的错误。

我基本上需要能够获取一系列视频路径(同步到外部SD)并逐个播放视频。我不需要任何控件或任何东西,只需要全屏视频。

由于我没有太多关于Android或Java的经验,我想我会尝试Easy Video Player,我想这只是MediaPlayer类的包装器。我可以让单个视频播放没问题,但我无法自动播放下一个视频。这是我目前的代码(目前只使用在线演示视频,而不是关闭SD卡。此外,布局文件与上面链接中的示例几乎相同,只是有几个不同的属性值):

public class VideoActivity extends AppCompatActivity implements EasyVideoCallback {

    private static final String[] TEST_VIDEOS = {"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", "http://www.html5videoplayer.net/videos/toystory.mp4"};

    private EasyVideoPlayer player;
    private int currentVideo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);

        player = (EasyVideoPlayer) findViewById(R.id.video_player);

        player.setCallback(this);

        currentVideo = 0;

        player.setSource(Uri.parse(TEST_VIDEOS[currentVideo]));
    }

    @Override
    public void onPaused(EasyVideoPlayer player) {
        super.onPause();

        player.pause();
    }

    @Override
    public void onCompletion(EasyVideoPlayer player) {
        if (currentVideo != TEST_VIDEOS.length - 1) {
            currentVideo++;
            player.reset();
            player.setSource(Uri.parse(TEST_VIDEOS[currentVideo]));
            player.start();
        }
    }
}

这是调用onCompletion()时显示的监视器输出:

D/EasyVideoPlayer: onCompletion()
D/EasyVideoPlayer: Loading web URI: http://www.html5videoplayer.net/videos/toystory.mp4
E/MediaPlayer: start called in state 4
E/MediaPlayer: error (-38, 0)
E/MediaPlayer: Error (-38,0)

我可能在那里,或者我可以离开,我只是不知道。我尝试在player.reset()中调用onCompletion(),但它似乎根本没有做任何事情。我认为玩家只会在没有加载视频的情况下进入初始状态。

感谢任何帮助,我为无知而道歉,

感谢。

更新

我将player.start();移到onPrepared()监听器中,上面粘​​贴的错误不再显示。此外,几秒钟后,播放下一个视频的声音,但播放器仍然会显示第一个视频的最后一帧,并带有播放按钮。

1 个答案:

答案 0 :(得分:0)

请将您的onCompletion方法更改为:

@Override
    public void onCompletion(EasyVideoPlayer player) {
        if (currentVideo != TEST_VIDEOS.length - 1) {
            currentVideo++;
            this.player = player;
            this.player.reset();
            this.player.setSource(Uri.parse(TEST_VIDEOS[currentVideo]));
            this.player.start();
            this.player.setCallback(this); 
        }
    }