exoplayer - 如何让变形视频与 exoplayerleaback 一起使用?
问题描述
我正在播放一个应该以 16x9 显示的 720x480 视频。它显示垂直压缩,就好像它使用方形像素一样。我用 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);
}
}
解决方案
exoplayer 靠背扩展中有一个错误。我在这里提交了一个拉取请求来修复它:github.com/google/ExoPlayer/pull/6578。此拉取请求现已提交给 Excoplayer,问题已解决。
推荐阅读
- javascript - 从对限制函数的所有调用中获取参数 (lodash)
- python - 函数和随机数
- javascript - 如何比较两个数组并删除不匹配的记录
- git - Git:我可以删除推送文件的所有历史记录,除了它的最后一次提交吗?
- python - 为什么在 google colab 中使用 print() 函数可以避免内存不足?
- python - 什么时候使用过滤器函数而不是列表理解?
- docker - IP 范围与子网,案卷桥网络
- python - 将整个数据框行中的值与另一个数据框进行比较
- c# - 如何从 Google Cloud Storage 下载文件
- objective-c - 我正在使用标准 Cocoa API 从 NSView 创建 PDF。PDF 在预览中可以正常打开,但无法在 Adobe 应用程序中打开。有什么建议吗?