【问题标题】:Android - playing many videos from external storage - audio only and black screenAndroid - 从外部存储播放许多视频 - 仅音频和黑屏
【发布时间】:2013-02-26 19:17:32
【问题描述】:

在我的应用程序中,我有许多短片(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();
}

我尝试使用媒体播放器和表面。试图缓存其他媒体播放器(为下一个视频准备媒体播放器,所以当我不想播放时,我只是更换了播放器)。似乎没有任何帮助。

视频是 mp4。

【问题讨论】:

    标签: android media-player screen external android-videoview


    【解决方案1】:

    只需替换您的 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
                }
            });
    

    希望对你有用!!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多