我是一名网络开发人员,负责制作应该是一个相当简单的应用程序。我对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()
监听器中,上面粘贴的错误不再显示。此外,几秒钟后,播放下一个视频的声音,但播放器仍然会显示第一个视频的最后一帧,并带有播放按钮。
答案 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);
}
}