一些历史
Archos 视频播放器和 nova 的设计不会影响视频宽高比。播放视频时最初提出了两种图像格式:原始和全屏。原始对应于视频的非拉伸缩放以填充屏幕的两个维度之一而不进行任何裁剪。全屏对应于视频的非拉伸缩放以填充整个屏幕尺寸,有时会导致裁剪。
回顾基础知识
在继续之前,如果您遇到宽高比失真,请检查您的电视设置本身不会扭曲图像,即您在电视设置上选择了图像格式“原始”或 16:9,如果您的电视是16:9。
让我们回顾一些基础知识:宽高比是视频宽度(像素数)与其高度(像素数)的比率。视频文件的常见纵横比为 16:9、4:3、21:9。
显示模式
NVP 现在有 3 种显示模式:
- 原始:视频被缩放到最大以在屏幕上完整观看。这可能会导致黑色垂直或水平条。此模式旨在保持正确的纵横比。
- 全屏:视频被缩放以填满整个屏幕(没有黑条),导致视频的某些部分未显示。此模式旨在保持正确的纵横比。
- stretched:视频被拉伸以填满整个屏幕并完整可见,这可能导致宽高比不正确。已选择不在 Archos 和 Nova 视频播放器中实施此模式。
为了计算表面尺寸以显示可能大于屏幕尺寸 (SurfaceController.java) 的视频,该程序依赖于 ffmpeg 而不是 MediaCodec 探测的分辨率。事实上,虽然通过 CTS 测试强制执行,但一些未经认证的 Android 电视盒可能会使用 MediaCodec 有时会输出错误的分辨率(例如某些 Rockchip 实现),从而导致不正确的纵横比。
值得注意的是,最近的 Android 9 飞利浦 Android TV(例如 65PUS7304)表现异常并且依赖于错误的实现。这些电视硬件编解码器系统地添加黑色顶部和底部条,这样 1920×800 视频看起来垂直压缩(最终视频高度为 592=800*800/1080)。为了在这台电视上获得正确的宽高比,人们应该出人意料地使用拉伸模式。引入可怕的拉伸模式是为了让飞利浦电视用户能够获得正确的纵横比。糟糕的实施会导致糟糕的妥协。[更新] 已实施此问题的正确解决方法,不再需要拉伸模式。
Mi 激光投影仪在全屏模式下会遇到另一种特殊行为,这会导致始终显示拉伸图像。目前的解释是 MediaCodec 拒绝以高于屏幕尺寸的分辨率缩放图像,从而导致这种不幸的效果。虽然同样基于 amlogic CPU,但 MiBoxS 上不存在此问题。
刷新率和帧率
视频文件通常以固定的每秒帧率 (fps) 进行编码,为了限制抖动,最好调整显示器的刷新率以匹配视频帧率的整数倍。如果不这样做,您在观看与丢帧相对应的视频时会遇到一些卡顿,以重新调整刷新率和帧率之间的差异。为了避免这个问题,一些显示器提出了各种刷新率,例如 23.976Hz、24Hz、25Hz、29.97Hz、30Hz、50Hz、59.94Hz、60Hz,NVP 有一个设置选项可以动态调整显示刷新率以适应视频帧率(或最小化差异)。当通过 HDMI 将 Android 电视盒连接到电视时,几乎总是会提出多个刷新率。DBG=true
在播放视频时Player.java
查看日志。D Player : Display supported mode
最后,按照电影行业的建议禁用电视上的任何运动插值设置。https://www.change.org/p/hdtv-manufacturers-please-stop-making-smooth-motion-the-default-setting-on-all-hdtvs
最小化抖动使屏幕刷新率适应视频帧率
Nova 通过最小化以下指标使屏幕刷新率适应视频帧率,从而最大限度地减少抖动:min(refresh%fps,|refresh%fps-fps|)/refresh
以下电子表格可用于处理生成的算法:https ://docs.google.com/spreadsheets/d/126OQhsoCWJ6_c_eZd3KSqXVmAMxK3EusvdTvD1iyuoc/edit?usp=sharing
下载地址:
https://www.8y-ad.com/index/soft/728.html
暂无评论内容