1

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

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

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

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

4

1 回答 1

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);
        }
于 2012-12-30T10:14:48.460 回答