媒体播放器显示视频

时间:2012-06-13 18:46:23

标签: android video media-player

为什么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();
    }


}

2 个答案:

答案 0 :(得分:1)

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

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

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

视频启动时,您需要将背景设置为null,否则您将无法看到该视频。

至于它没有立即播放,如果你正确准备它,它应该在调用start()后立即播放,但如果它必须通过互联网从流中加载数据,它可能会被延迟。

答案 1 :(得分:0)

我发现这是电话故障。(大多数情况下)视频将自动显示,除非手机被应用程序陷入困境,因此视频加载时间更长(在运行voip服务后注意到)。