我正在播放720x480的视频,该视频应该以16x9的比例显示。它显示为垂直压缩,好像使用正方形像素一样。我使用onVideoSizeChanged方法添加了VideoListener。使用正确的值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);
}
}
答案 0 :(得分:1)
exoplayer leanback扩展程序中存在一个错误。我在此处提交了一个拉取请求以对其进行修复:github.com/google/ExoPlayer/pull/6578。现在,此请求请求已提交给Excoplayer,问题已解决。