6

MediaPlayer.setVideoScalingMode(int 模式)非常适合 API 16 及更高版本,允许在 和 之间进行VIDEO_SCALING_MODE_SCALE_TO_FIT选择VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING

有没有办法在 API 16 之前为 Android 实现相同的功能?

我试图设置SurfaceViewMediaPlayer 使用的尺寸,但 MediaPlayer 会裁剪原始视频以适合SurfaceView.

4

1 回答 1

0

面对同样的问题,通过这篇文章获得解决方案 http://blog.lemberg.co.uk/surface-view-video-cropping 但有一点点改变:默认情况下,TextureView 已经具有缩放以使视频适合屏幕纵横比,所以你会得到高/宽视频的左/右或上/下条纹。当您使用文章中的方法时,您将获得 TextureView 比例 + 由 updateTextureViewSize 计算的比例,因此比例非常大。我对这个问题的解决方案是计算相对比例值:

float div = Math.max(scaleX,scaleY)-Math.min(scaleX, scaleY);
matrix.setScale(1+div,1+div,pivotPointX,pivotPointY);

代替

 matrix.setScale(scaleX, scaleY, pivotPointX, pivotPointY);
于 2014-09-02T13:08:48.537 回答