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);
本文介绍了通过调整视频播放器窗口大小而非Codec输出来保持视频宽高比的方法。包括设置Window允许超出屏幕尺寸、SurfaceView固定宽高比及动态调整Surface窗口大小等步骤。
1798

被折叠的 条评论
为什么被折叠?



