as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

在Vega中检测屏幕分辨率

在Vega中检测屏幕分辨率

在本文中,您将为在Vega OS设备上运行的React Native应用实现屏幕分辨率检测。虽然Fire TV Stick 4K Select支持4K播放,但并非所有电视都支持4K播放。当Fire TV Stick 4K Select连接到高清 (HD) 电视时,您的应用应仅请求高清或更低分辨率的流媒体以提供最佳体验。请求错误的视频流可能会导致播放问题,例如卡顿、失真或无法播放。

有两种方法可以检测屏幕分辨率:

  • 来自W3C标准的decodeInfo(),推荐用于使用Shaka播放器或其他网页型播放器的应用
  • Vega Graphics API,推荐用于不使用W3C API的自定义播放器

先决条件

定义decodeInfo() polyfill

如果您使用带有亚马逊补丁的Shaka播放器,请跳过此步骤。polyfill已经包括在内。

对于其他玩家,请为decodeInfo() 定义polyfill。参考媒体功能文档中的polyfill代码。

在Vega体育示例应用中,构建脚本在<应用根目录>/w3media/polyfills/文件夹下放置了一个名为W3CMediaPolyfill.ts的文件。该文件包含decodeInfo() 的实现。

安装polyfill

在您的应用中定义polyfill后,安装它,以便该应用可以访问媒体功能。在Vega体育示例应用中,polyfill是在应用初始化期间安装的。

使用decodeInfo() 支持查询解析

如果您使用Shaka播放器或其他直接调用decodingInfo() 的W3C型播放器,请跳过此步骤。

对于自定义播放器代码,请使用decodeInfo() 来检查连接的显示器支持哪些分辨率。以下示例演示了对高级视频编码 (AVC) 流的高清和超高清 (UHD) 解码支持。

已复制到剪贴板。


const contentType = 'video/mp4;codecs=avc1.640028';
const configuration = {
  type: 'media-source',
  video: {
    contentType: contentType,
    width: 1920,
    height: 1080,
    bitrate: 2000,
    framerate: 29.97,
  },
};

const configuration_4k = {
  type: 'media-source',
  video: {
    contentType: contentType,
    width: 3840,
    height: 2160,
    bitrate: 8000,
    framerate: 29.97,
  },
};

decodingInfoImpl(configuration)
  .then((result) => {
    console.log(
      '解码' +
        contentType +
        '于高度' +
        configuration.video.height +
        '比特率' +
        configuration.video.bitrate +
        '帧速率' +
        configuration.video.framerate +
        '' +
        (result.supported ? '' : '') +
        '受支持的,',
    );
  })
  .catch((err) => {
    console.error(err, ' caused decodingInfo to reject');
  });

decodingInfoImpl(configuration_4k)
  .then((result) => {
    console.log(
      '解码' +
        contentType +
        '于高度' +
        configuration_4k.video.height +
        '比特率' +
        configuration_4k.video.bitrate +
        '帧速率' +
        configuration_4k.video.framerate +
        '' +
        (result.supported ? '' : '') +
        '受支持的,',
    );
  })
  .catch((err) => {
    console.error(err, '导致decodingInfo拒绝');
  });

当Fire TV Stick 4K Select连接到非4K显示器(例如1080p或720p)时,decodingInfoImpl()configuration_4k返回为不受支持,而将较低分辨率的配置返回为受支持的状态。

使用Vega图形API作为替代方案

Vega图形API提供了一种检索有关Fire TV设备及其所连显示器信息的方法,包括高度、宽度和高动态范围 (HDR) 等功能。这种方法最适合不使用W3C API的自定义播放器。

返回的高度值反映了设备和显示器组合的正确分辨率:

  • 连接到Fire TV Stick 4K的高清电视选择返回1080
  • 连接到Fire TV Stick 4K Select的4K电视返回2160

测试实现

在Fire TV设备上构建和运行您的应用:

  1. 将Fire TV Stick 4K Select连接到高清 (1080p) 电视。
  2. 运行您的应用并验证它仅请求高清流媒体。
  3. 将Fire TV Stick 4K Select连接到4K电视。
  4. 运行您的应用并验证它请求4K流媒体。

Last updated: 2026年3月26日