Я играю видео 720x480, которое должно быть показано в формате 16x9. Он отображается вертикально сжатым, как если бы он использовал квадратные пиксели. Я добавил VideoListener с методом onVideoSizeChanged. Этот метод вызывается с правильными значениями 720 480 1.1851852. Странно то, что если я установил точку останова в этом методе, когда он достигнет точки останова во время начала воспроизведения, видео будет отображаться и воспроизводиться с правильной формой, но как только этот метод будет разрешен для продолжения, видео переходит нанеправильный размер. Эта проблема существует с примером кода на https://github.com/android/tv-samples/tree/master/Leanback, на котором я основываю свое приложение.
Я попытался вызвать view.setScaleX (pixelWidthHeightRatio);в обратном вызове onVideoSizeChanged, см. ниже. Это привело к смещению видео влево, но по-прежнему имеет неправильное соотношение сторон.
Я попытался добавить настройку кода масштабирования видео, но, по-моему, он установлен по умолчанию.
После создания mPlayer -
mPlayer.addVideoListener(new MyVideoListener());
класс слушателя
private class MyVideoListener implements VideoListener {
@Override
public void onVideoSizeChanged(int width, int height,
int unappliedRotationDegrees, float pixelWidthHeightRatio) {
SurfaceView view = getSurfaceView();
float scaleX = view.getScaleX();
if (scaleX != pixelWidthHeightRatio)
view.setScaleX(pixelWidthHeightRatio);
}
}