我使用vitamio库来播放rtsp。
虽然我的代码上有videoView.start();
,但视频会在完成缓存后一分钟开始播放!
但如果我在缓冲完成后改变方向,视频会立即开始播放! 我有以下代码,我知道更改方向调用此方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (videoView != null)
videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_SCALE, 0);
super.onConfigurationChanged(newConfig);
}
但我不知道究竟是什么让视频开始,我无法强迫它开始播放(在缓冲完成后立即),而不是改变方向。请帮忙......
答案 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);
}