as

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

媒体应用的一般要求

媒体应用的一般要求

Vega上的媒体直播应用要想通过亚马逊应用商店的认证,则必须满足以下一般准则和要求。

应用进入后台时释放媒体播放器资源。

当生命周期管理器 (LCM) 将应用转移到后台时,应用必须释放未使用的媒体资源,特别是与媒体播放相关的资源。这里的一般准则是,对于视频点播 (VOD) 内容播放,应用必须释放媒体资源,并返回电影或内容详情页面。当应用恢复到前台时,为了让用户能够从停止播放处快速恢复播放,应用应保留直播和VOD内容播放的上下文。

应用可以通过反初始化VideoPlayer或从渲染树中卸载Video组件来释放媒体资源。

已复制到剪贴板。

await shakaPlayer.detach();
await videoPlayer.deinitialize();
await shakaPlayer.unload();{}
await shakaPlayer.destroy();

有关检测当前状态的信息,请参阅VegaAppState

编解码器选择

  • 基于音频设备功能的编解码器选择

应用必须选择合适的音频编解码器(AAC或Dolby)进行播放,具体取决于所连接的HDMI显示设备(例如电视或AVR)的音频功能。

  • 在蓝牙耳机和HDMI输出之间切换

在播放过程中,用户可能会在蓝牙耳机和HDMI输出之间切换。这可能会导致显示设备上支持的音频编解码器发生变化。例如,HDMI输出支持Dolby,而蓝牙耳机不支持。应用需要检测音频输出功能的这种变化,并在MSE播放器中切换音频编解码器。

强制执行顺序播放模式

一般建议您使用顺序播放模式来播放HLS和MPEG2TS直播内容。

如果需要在HLS自适应流中播放MPEGTS内容,请启用顺序模式标志,如以下示例代码所示。

已复制到剪贴板。

const initializeShaka = () => {
  console.log('app: in initializePlayer() index = ', nextContent.index);
  if (videoPlayer.current !== null) {
    player.current = new ShakaPlayer(videoPlayer.current, playerSettings);
  }
  if (player.current !== null) {
      player.current.load(content[nextContent.index], AUTOPLAY);
      player.current.player.configure('manifest.hls.sequenceMode', true);
  }

清单要求

要正确支持媒体播放,必须在manifest.toml文件中包含以下条目。

已复制到剪贴板。

[wants]
[[wants.service]]
id = "com.amazon.mediametrics.service" # 对于指标服务为必需

[[wants.service]]
id = "com.amazon.media.server"

[[wants.service]]
id = "com.amazon.gipc.uuid.*"

[[wants.service]]
id = "com.amazon.media.playersession.service"

[[wants.privilege]]
id = "com.amazon.devconf.privilege.accessibility" # 对于隐藏式字幕必需

[[wants.service]]
id = "com.amazon.mediabuffer.service"

[[wants.service]]
id = "com.amazon.mediatransform.service"

[offers]
[[offers.service]]
id = "com.amazon.gipc.uuid.*"

要将音频功能用于播放,必须在manifest.toml文件中请求以下音频管理服务:

  • com.amazon.audio.stream - 适用于所有播放/录制客户端
  • com.amazon.audio.control - 适用于所有AudioManager API客户端
  • com.amazon.audio.system - 适用于所有AudioManager API客户端

已复制到剪贴板。

[[wants.service]]
id = "com.amazon.audio.stream"

[[wants.service]]
id = "com.amazon.audio.control"

[[wants.service]]
id = "com.amazon.audio.system"

安全视频解码器会话的限制

第一款基于Vega OS的Fire TV仅支持一个安全视频解码器实例。为了实现连续流畅的安全视频播放,您必须在初始化第二个videoPlayer实例之前,先释放(反初始化)第一个videoPlayer实例。

如果您不释放(反初始化)第一个videoPlayer实例,则第二个播放将失败。

以下代码示例显示如何释放(反初始化)VideoPlayer实例并启动一个新实例。

已复制到剪贴板。

// 开始第一个安全视频播放。

// 初始化视频播放器
let videoPlayer1 = new VideoPlayer();
await videoPlayer1.initialize();

// 现在开始播放。完成后,释放(反初始化)播放器。

// 卸载JS播放器
// 释放(反初始化)视频播放器。等待promise对象
await videoPlayer1.deinitialize();

// 在释放(反初始化)第一个安全视频播放后,开始第二个安全视频播放。

// 初始化视频播放器
let videoPlayer2 = new VideoPlayer();
await videoPlayer2.initialize();

// 现在开始播放。完成后,释放(反初始化)播放器。

// 卸载JS播放器
// 释放(反初始化)视频播放器。等待promise对象
await videoPlayer2.deinitialize();

Last updated: 2025年9月30日