【问题标题】:Creating an autoplay video playlist创建自动播放视频播放列表
【发布时间】:2016-10-09 15:30:38
【问题描述】:

我是一名网络开发人员,负责制作我认为应该是相当简单的应用程序。我在 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)

我可能快到了,也可能离得很远,我只是不知道。我尝试在onCompletion() 中只调用player.reset(),但它似乎根本没有做任何事情。我会假设播放器会进入一个没有加载视频的初始状态。

感谢您的帮助,我为无知道歉,

谢谢。

更新:

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

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:

    请将您的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); 
            }
        }
    

    【讨论】:

    • 感谢您的回复。获取Cannot resolve method 'setOnCompletionListener(...)'。没有那条线,不幸的是它和以前完全一样。
    • 好的,我没有注意到您正在使用第三方库。将该行替换为this.player.setCallback(this);
    • 您是否将this.player.setOnCompletionListener(this); 替换为this.player.setCallback(this);?这应该可以工作,因为您在onCreate 方法中使用了setCallback(this);
    • @Perceptic 好的,我已经编辑了我的答案,你能再试一次吗?
    • 是的,我更换了它,它仍然是同样的错误。查看here,可能是start() 方法被调用得太早了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多