0

为什么 MediaPlayer 没有在视频可用时立即显示。我的意思是在 iPhone 上播放视频时,视频会立即显示。即使从暂停中返回。但在 Android 上,屏幕会保持黑屏几毫秒到一秒,具体取决于所使用的设备和后台运行的进程数量。

我问这个是因为我想使用我的视频播放中的一个开始帧作为一种屏幕截图,目前我正在使用处理程序在暂停视频之前等待 1 秒。

有人可以告诉我一种快速的方法来让视频在开始甚至准备好后立即显示出来,而不是我的解决方法吗?

编辑:这是我准备视频播放器的方法,因此应该正确准备。

private void initVideo() 
{
    Log.i("VideoPlayer", "Initialize Video File" + videoFileName);

    AssetFileDescriptor afd;
    try {
        if(videoFileName != null);
        {

            afd = getAssets().openFd(videoFileName);

            vidplayer = new MediaPlayer();

            vidplayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());

            vidplayer.setDisplay(holder);
            vidplayer.prepare();
            vidplayer.setOnCompletionListener(this);
            vidplayer.setOnPreparedListener(this);  
            //Log.i("INITVIDEO", Integer.toString(videoPausedAt));
            vidplayer.seekTo(videoPausedAt);
            //Log.i("VideoPlayer", "video Prepared");

            videoDuration = vidplayer.getDuration()/1000;


            isVideoReady = true;

        }

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e)
    {
        //Log.i("InitPlayer", e.getClass().toString());
        e.printStackTrace();
    }


}
4

2 回答 2

1

对于背景,您可以获得视频的缩略图:

private Bitmap getThumbnail(String path){
    try{
        return ThumbnailUtils.createVideoThumbnail(path, MediaStore.Images.Thumbnails.MINI_KIND);

    }catch(Exception e){
        return null;
    }
}

视频开始时,您需要将背景设置回 null,否则您将无法看到视频。

至于它不会立即播放,如果您准备正确,它应该在调用 start() 时立即播放,但如果它必须从互联网上的流中加载数据,它可能会延迟。

于 2012-06-13T18:55:53.100 回答
0

我发现这是手机故障。(大多数情况下)视频会自动显示,除非手机被应用程序卡住,因此加载视频需要更长的时间(在运行 voip 服务后注意到)。

于 2012-07-09T16:58:33.440 回答