在完成缓冲后,Android视频开始播放一分钟

时间:2012-12-29 10:27:43

标签: android video-streaming android-videoview

我使用vitamio库来播放rtsp。 虽然我的代码上有videoView.start();,但视频会在完成缓存后一分钟开始播放!

但如果我在缓冲完成后改变方向,视频会立即开始播放! 我有以下代码,我知道更改方向调用此方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    if (videoView != null)
        videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_SCALE, 0);
    super.onConfigurationChanged(newConfig);
}

但我不知道究竟是什么让视频开始,我无法强迫它开始播放(在缓冲完成后立即),而不是改变方向。请帮忙......

1 个答案:

答案 0 :(得分:0)

我遇到过VideoView的维度为0时,视频无法播放。 确保设置初始尺寸。

此外,我会尝试从头开始设置布局: videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_SCALE, 0);

我会在收到oncVideoSizeChanged回调后设置尺寸,例如,

public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

            FrameLayout.LayoutParams vLayout = (FrameLayout.LayoutParams) mSurfaceView.getLayoutParams();
            vLayout.width = getWindowManager().getDefaultDisplay().getWidth();
            vLayout.height = getWindowManager().getDefaultDisplay().getHeight();

            float aspectRatio = (float) width / height;
            float screenRatio = (float) vLayout.width / vLayout.height;
            float topMargin = 0, leftMargin = 0;

            if (screenRatio < aspectRatio)
                topMargin = (float) vLayout.height
                        - ((float) vLayout.width / aspectRatio);
            else if (screenRatio > aspectRatio)
                leftMargin = (float) vLayout.width - (vLayout.height * aspectRatio);

            vLayout.setMargins((int) leftMargin, (int) topMargin, 0, 0);
            mSurfaceView.setLayoutParams(vLayout);
        }