1. 原理
不直接改变Codec输出的视频宽高比,而是改变视频播放器窗体的大小。
2. 设置Window
须要将Window设置未能够超出屏幕尺寸
mWindow.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
3. SurfaceView保持宽高比
mSurfaceHolder.setFixedSize(mVideoWidth, mVideoHeight);
4. 改变Surface窗体大小
ViewGroup.LayoutParams layoutParams = (ViewGroup.LayoutParams) mSurface.getLayoutParams(); if (scale > 4.0f) { scale = 4.0f; } else if (scale < 0.25f) { scale = 0.25f; } layoutParams.width = (int) (windowWidth * scale); layoutParams.height = (int) (windowHeight * scale); mSurface.setLayoutParams(layoutParams);