如何为早期版本的Android实现setVideoScalingMode

时间:2013-02-22 20:46:18

标签: android android-mediaplayer

MediaPlayer.setVideoScalingMode(int mode)非常适合API 16及更高版本,允许在VIDEO_SCALING_MODE_SCALE_TO_FITVIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING之间进行选择。

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

我尝试设置MediaPlayer使用的SurfaceView维度,但MediaPlayer裁剪原始视频以适合SurfaceView的任何维度。

1 个答案:

答案 0 :(得分:0)

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

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

而不是

 matrix.setScale(scaleX, scaleY, pivotPointX, pivotPointY);