媒体播放器-安卓-播放许多视频从外部存储-音频只有和黑屏



在我的应用程序中,我有许多短(1-2秒)电影存储在外部存储。一个活动显示这些视频。问题是,当我创建活动一切都很好。但是当我重放电影或换电影时,有时会出现黑屏(视频开始时)。但当视频是1-2秒时,这是不可接受的),只有音频。

一些帖子建议使用AsyncTask播放视频。不幸的是,它没有帮助。

由于视频播放总是在活动创建中工作,所以当用户想要重播或更改视频时,我做了一些重新加载整个活动的实验。在快速视频(活动)更改"无法播放视频"消息时显示。

也许它与android外部内存管理有关?有人知道我哪里做错了吗?

我使用的代码:

//on button click
public void navigateToNext(View view) {
    setNextVideo();
    refreshPlayer();
}
public void play(View view) {
    refreshPlayer();
}
public void refreshPlayer(){
    if(playingTask != null && !playingTask.isCancelled()){
        playingTask.cancel(false);
    }
    initPlayingTask();
}
private void initPlayingTask() {
    playingTask = new AsyncTask(){
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            String videoPath = getActualVideoPath();
            videoView.setVideoPath(videoPath);
            videoView.requestFocus();
            videoView.setOnPreparedListener(new OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        }
        @Override
        protected Object doInBackground(Object... params) {
            while(!this.isCancelled() && videoView.isPlaying());
            return null;
        }
        @Override
        protected void onPostExecute(Object result) {
            super.onPostExecute(result);
        }
    };
    playingTask.execute();
}

我尝试使用mediaplayer和surface。试图缓存其他媒体播放器(准备下一个视频的媒体播放器,所以当我不想播放它时,我只是改变播放器)。似乎什么都没用。

视频格式为mp4。

只是替换你的mp.start() -> videoView.start();在你的onPrepared或你也可以尝试不实现onPreparedListener

        videoView.setVideoPath(videoPath);
        videoView.requestFocus();
使用

:

        videoView.start(); // As you are using mediaplayer to start that's why it's only playing sound with black screen
            OR
        videoView.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared() {
                videoView.start(); // As you are using mediaplayer to start that's why it's only playing sound with black screen
            }
        });

希望它对你有用!!

最新更新