Fire TV上的电视输入框架
线性电视集成基于用于开发电视输入服务的Android文档。以下链接和说明将帮助您了解Fire TV的专门技术要求。
背景知识和术语
在您深入了解Fire TV上的电视直播之前,以下外部链接可以有效帮助您了解相关背景和基本知识。在进行集成之前,请查看此文档:
线性电视集成基于以下Android文档: 开发电视输入服务。
集成详细信息
要集成线性直播频道,必须提供对客户的频道授权的访问权限以及相关元数据,以便在Fire TV上提供内容转发浏览和搜索体验。
直播频道授权
您的应用必须进行更新,才能仅将授权频道推送到设备上的本地频道数据库(由电视输入框架(TIF)提供)中。可以通过使用INITIALIZE_PROGRAMS
操作注册广播接收器来更新(或者添加或删除)频道。确保在最初安装应用时更新此授权元数据。即使应用正在后台运行,也可执行此操作。
要编辑频道,请参阅使用频道数据。
如果此数据库中有频道,则客户可以查看这些频道。此数据库中的频道可以随时添加或删除,且更改将立即反映在UI中。这是因为在任何实时体验中向客户展示的所有频道都以该数据库为依据。
尽可能完整填写TvContract.Channels
中的频道列。如果您知道您的Gracenote频道ID或希望提供深层链接进行播放,可以将这些信息添加到Channels#COLUMN_INTERNAL_PROVIDER_DATA
中,如代码示例部分所述。
获取节目元数据
有两种方法可以向电视直播提供元数据。
- 使用Gracenote频道ID(首选)
- 自行插入频道元数据
请记住,必须单独为每个频道选择方法。这意味着可以对一个频道使用Gracenote ID,而对另一个频道自行插入频道元数据。
TIF+Gracenote | 仅TIF | |
---|---|---|
浏览专用的旋转显示区域 | ||
电视直播提供方行 | ✓ | ✓ |
App Peak | ✓ | ✓ |
浏览混合旋转显示区域 | ||
近期观看内容 | ✓ | ✓ |
正在播放主页 | ✓ | ✓ |
类型行 | ✓ | ✓ |
浏览 | ||
电子节目指南 | ✓ | ✓ |
搜索 | ||
频道 | ✓ | ✓ |
节目 | ✓ | |
语音 | ||
调到 |
✓ | ✓ |
调到 |
✓ | |
更新方法(元数据) | ||
通过Gracenote自动更新 | ✓ | |
手动更新(必须定期手动更新信息) | ✓ |
提供Gracenote ID(首选方法)
如果提供Gracenote频道ID(onTV
或GVD(全球视频数据)),信息将通过电视直播应用每天同步到云端。如果找到Gracenote ID,该ID将用于在Fire TV目录中查找频道,该目录包含最多14天的节目信息。此信息将显示在“Home(主页)”和“Live(直播)”选项卡以及频道指南中。它将自动刷新到最新状态,并可通过“搜索”和Alexa发现。
没有Gracenote ID?
如果不提供频道的Gracenote频道ID,则需要插入包括标志在内的所有频道元数据,并定期将所有频道即将播出的节目信息插入到TvContract.Programs中。示例电视直播应用提供了相关示例。
可以包含以下字段:
UX字段 | 描述 | 是否需要认证? | 关联的TIF字段 |
---|---|---|---|
Program Name | 节目的名称。屏幕左上角的大文本。 | 是 | Title |
Time of Playback | 播放的时间(例如: 23:00至24:00)。位于节目名称正下方。 | 是 | Start_time_utc_millis End_time_utc_millis |
Episode Name | 正在播放的剧集的名称。在播放时间和徽章下方以粗体显示。 | 是 | Episode_title |
Episode Description | 剧集的描述。填充剧集名称之后剩余的部分。使用详细描述,但会回退到简短描述。 | 是 | Long_description fallback to short_description |
Season & Episode Information | 连续剧(如情景喜剧)中常见。提供本次播放的季和剧集信息。这是剧集名称后节目简介的一部分。 | 否 | Season_display_number Episode_display_number |
Rating | 以徽章形式显示剧集的本地评分。与播放时间位于同一行。 | 否 | content_rating |
Closed Captions | 表示播放是否支持隐藏式字幕的徽章。与播放时间位于同一行。 | 否 | 暂不支持 - 即将推出 |
HD | 表示播放内容是否高清的徽章。与播放时间位于同一行。 | 否 | 暂不支持 - 即将推出 |
Live | 旋转磁贴上的徽章,表示内容在录制过程中“实时”播放。 | 否 | 暂不支持 - 即将推出 |
New | 旋转磁贴上的徽章,表示播放为首播(但并非实时播放)。 | 否 | 暂不支持 - 即将推出 |
Program Image | 填充旋转磁贴的16:9节目/电影图像。分辨率应为768x432或更高。 | 是 | Thumbnail_uri |
Background Image | 填充节目简介旁右上角部分的16:9节目/电影图像。此项分辨率应为1280x720或更高。 | 是 | Poster_art_uri |
Channel Name | 旋转磁贴上显示的频道名称。根据最佳实践部分,将显示16个字母数字字符或8到10个全角字符。 | 是 | Display_name |
Channel Logo | EPG(电子节目指南)中使用的透明单色标志。如果没有频道标志,将回退到(选取框中)频道名称。 | 是 | logo |
频道排序
频道排序决定Fire TV设备UI显示的频道排行。基准顺序由提供方决定。但是,客户可以通过上下文菜单或频道管理器收藏频道。这些频道的显示优先级最高。因此,优先级为:收藏夹 > 频道排序选项。Fire TV提供了两种具有不同开发工作级别的选项:
-
显示名称排序历来是最常用的排序,因其所需开发时间为零。使用这种排序,Fire TV UI中的频道将根据
displayName
采用统一码显示。例如,频道列表{“XYZ”、“1BC”和“1 BK”}将按{“1 BK”、“1BC”、“XYZ”}排序。 -
自定义频道排序是您的第二个选项。使用这种排序,提供方频道将按照与tv.db中的“_id”一致的顺序显示,“_id”按插入顺序分配。在tv.db中更新这些频道时,需要保持该频道排序,因为电视直播应用将在Fire TV UI中采用相同的顺序。
为保证一致的体验,我们强烈建议您选择与应用内频道排序相似度最高的频道排序。在加入过程中,您需要与您的亚马逊联系人合作选择频道排序方法。
全屏播放
以下两种实现方法可供选择:
- 深层链接(在特定应用中打开的链接)
- 原生电视应用
深层链接。Fire TV允许用户使用自己的应用进行全屏播放。为此,需要在频道数据库中提供深层链接意图,将其作为频道信息的一部分。如果在浏览或搜索时选择该频道,则会启动此意图。每当该意图被激活时,所请求的频道将启动全屏播放。请参阅代码示例部分。
原生电视应用。实现全屏播放的另一种方法是使用原生电视直播应用。这种方式通过TvInputService.Session
实现。要查看相关示例,请参阅示例电视直播应用
。
实时预览
即使提供了深层链接意图,也必须实现TvInputService.Session
。每当客户聚焦于浏览行中的某个磁贴时,就会调用onTune
。此时您必须显示带有应用名称或标志的闪屏界面,随后将所请求频道的播放渲染在提供的安全Surface
上。这样可以提高参与度。onTune
请求也可用于捕获指标,或作为开始加载直播内容以提高性能的提示。
闪屏界面指南
- 当用户聚焦于磁贴后,应在3秒之内启动闪屏界面。
- 在加载闪屏界面后的2秒之内,应开始播放聚焦内容的视频预览。
家长监护
如果您的应用将内容渲染到提供给TvInputService
(即实时预览或无频道深层链接)的Surface上,则必须恰当地实施家长监护。这样可以确保在启用家长监护之后,必须先输入PIN,然后才能向最终用户显示内容。您的TvInputService
负责在请求应该被阻止的内容时通知前台应用。请参阅代码示例部分了解建议的流程。
提供方属性
请确保您自定义了以下三个项目:
1.标签
默认情况下,客户浏览频道时,应用的label
将用作标题。标签长度不应超过12个全角字符或24个字母数字字符。如果您想用其他名称但无法更改标签,请与您的亚马逊联系人合作,以确保此信息被覆盖。
2.标志
请务必提供一个代表应用品牌的单色标志(白色图像、透明背景)。该标志将叠加在节目图像之上。此图像文件高度不得超过34个像素,横向宽度不得超过叠加图像的25%。
请联系亚马逊以了解详细信息。
3.横幅
可以通过程序包管理器提供应用横幅。示例请见代码示例部分。
认证核对清单
亚马逊将使用以下核对清单来验证您的应用是否集成了电视直播。您的应用的实现会直接影响下面的预期行为点。请注意,任何有关验证的例外情况都将根据具体情况处理。
权利状态更改
- 客户执行以下操作之一后,客户授权频道会填充到Fire TV UI(例如,“正在播放”行,频道指南): (1) 打开并登录应用,或 (2) 前往“Settings(设置)”>“Live TV(电视直播)”>“Sync Sources(同步源)”>“<应用名称>”,访问应用的设置页面。开发者必须检查这两种情况。
- 如果客户的会员资格过期(即,变为“未授权”状态),这些频道会继续在Fire TV UI上显示,直到客户进入频道、查看付费墙以及退出或拒绝该选项。
- 如果应用被卸载或者这些频道变为未授权频道,则会从Fire TV UI中删除这些频道。
最大推出速度
以最大500K/小时的速度向客户分阶段推出频道。
此值是指拥有频道权利的客户Fire TV设备的数量。频道权利意味着从Fire TV线性集成UX点击一次即可全屏播放。
示例:
- 应用ABC提供视频点播,但将电视直播作为付费附加程序。费率仅针对拥有电视直播附加程序的ABC客户。
- 应用XYZ提供了一种免费的基础频道套餐和另一种包含更多频道的付费套餐。如果更新了付费套餐的频道阵容,则此费率针对的是使用该付费套餐的客户。
浏览和播放体验
- 当客户转到某个频道时,将提供丰富的元数据体验。在线性电视指南中,频道将包括频道标志、频道号(可选)和未来14天的节目安排信息。节目元数据包括节目名称、播放时间、剧集名称、剧集描述(时长)、季节和剧集信息、隐藏式字幕、评级节目图像(16:9)和背景图像(16:9)。此元数据信息应来自Gracenote匹配或作为电视合同的一部分推送的元数据。
- 当客户转到“正在播放”行中的某个频道时,客户将能够看到取代背景图像的直播频道预览。
- 客户应该了解谁在提供此授权频道。这包括添加提供方属性作为背景图像的一部分(单色,34像素高度)或作为直播频道预览播放之前的启动画面。
- 选择频道后,客户将进入全屏播放。不超过两次按下后退按钮将返回Fire TV UI。
- 如果启用了家长监护(PCON),则在播放前会显示PIN提示。如果启用了PCON,则必须禁用实时频道预览。
- 如果访问Alexa,则须调低实时播放的音频音量;视频可继续播放。
- (可选)可将某个频道归类,以便该频道能显示在Fire TV UI上的其他入口点中。
开发、发行准备和部署
- 亚马逊必须能够将特定账户列入允许名单,以便在投入生产之前检查和验证集成体验。
- 只有授权频道才会在双方同意推出的市场中添加到Fire TV UI上。新市场中的后续频道推出将有新的认证审查,并需要列入允许名单。
- 亚马逊必须知晓在启动后添加和删除的任何频道。双方必须就可添加频道的数量上限达成一致。
- (强烈推荐)应用的下载页面和发行说明应提及电视直播集成,以便客户了解Fire TV上新功能的可用性。
进行更新
对于所有应用更新,请在进行更新之前再次检查认证核对清单中的项目。
对于所有频道阵容更新,请再次检查认证核对清单中的项目,并执行以下操作:
- 请至少在推出前两周告知Fire TV联系人推出时间线。
- 如果要将频道阵容增加或减少25%以上,请获得Fire TV联系人的明确批准。