2013-02-22 10 views
6

MediaPlayer.setVideoScalingMode (int-Modus) ist nett für API 16 und höher, so dass Sie zwischen VIDEO_SCALING_MODE_SCALE_TO_FIT und VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING wählen können.So erreichen Sie setVideoScalingMode für frühe Versionen von Android

Gibt es eine Möglichkeit, die gleiche Funktionalität für Android vor API 16 zu erreichen?

Ich habe versucht, die Abmessungen von SurfaceView von einem MediaPlayer verwendet, aber MediaPlayer beschneidet das Originalvideo, um alle Dimensionen der SurfaceView passt.

Antwort

0

mit dem gleichen Problem konfrontiert up, Lösung mit diesem Artikel erhält http://blog.lemberg.co.uk/surface-view-video-cropping Aber mit kleiner Änderung: standardmäßig TextureView hat bereits skalieren, um Video fit Bildseitenverhältnis zu machen, so dass Sie/rechts oder oben/unten Streifen links erhalten für große/große Videos. Und wenn Sie Ansatz aus Artikel verwenden, erhalten Sie TextureView scale + scale berechnet von updateTextureViewSize, also sehr großen Index. Meine Lösung für dieses Problem ist relativ Skalenwert zu berechnen:

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

statt

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