Używam demonstracji Android MediaPlayer dla wideo. Mam streaming video 640x480. Po prostu chcę, aby obraz był tak duży, jak to tylko możliwe (niezależnie od orientacji urządzenia) przy zachowaniu proporcji. Nie mogę tego zrobić. Po prostu rozciąga się na cały ekran. Mój SurfaceView w układzie nie zachowuje proporcji w "fill_parent" lub "wrap_content". Kiedy sprawdzić (i zmienić wielkość powierzchni w kodzie, to zdaje się ignorować wszelkie zmiany i to, co jest dziwne, to powiedziano mi, że w tym kodzie mój rozmiar wideo jest:. 176 x 144.Przesyłanie strumieniowe wideo z systemem Android - wymagany współczynnik proporcji
public void onVideoSizeChanged(MediaPlayer mp, int width, int height)
{
Log.v(TAG, "onVideoSizeChanged called");
Log.v(TAG, "Surface Width: " + width + " Surface Height: " + height);
if (width == 0 || height == 0) {
Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")");
return;
}
mIsVideoSizeKnown = true;
mVideoWidth = width;
mVideoHeight = height;
mVideoWidth = mp.getVideoWidth();
mVideoHeight = mp.getVideoHeight();
Log.v(TAG, "Surface Width: " + mVideoWidth + " Surface Height: " + mVideoHeight);
if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
}
}
To gdzie staram się zmienić rozmiar:
private void startVideoPlayback() {
Log.v(TAG, "startVideoPlayback");
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}
Myśli