文档

播放器状态码

有情况需要处理时,播放器会显示一个状态图标,并将该情况报告给 screenRIG。本页列出每个状态图标,以及每个页面、更新、存储和卡片代码,并附上其常见原因和解决办法。

代码出现的位置

状态图标是屏幕左下角的一个图标,首次出现时附带一行消息。播放器显示排名最高的活动状况,并在该状况持续期间保留状态图标。控制台在屏幕的在线状态旁显示该状态图标。

screenrig screen show scr_ID 返回播放器报告的内容:

成员包含
statuschip:状态图标的 id(无图标显示时为 null)、其 level 以及播放器报告的时间。首次报告之前不存在
last_page_failure最近一个未能准备就绪的页面的 page_id、code 和 at
manifest_upgrade最近一次内容更新的进展:state、code、attempt 和 retry_at
storage, storage_shortfall播放器最近一次的存储报告,以及播放列表超出多少。存储缺口仅在内容放不下时才会出现

状态图标是播放器的最后一次报告:online 为 false 时应视为已过期。player.video_unusable 和 player.card_failed 等报告会写入屏幕的播放器日志:

screenrig events list --source log --screen-id scr_ID

状态图标

表格按排名顺序排列:多个状况同时成立时,显示第一个。标签是该状态图标在控制台中的名称。

状态图标原因修复
archived(屏幕已归档)屏幕已归档,因此显示黑屏。播放器保留其凭据screenrig screen unarchive scr_ID。播放器无需再次配对即可恢复。归档为 replaced 的屏幕无法取消归档:screen delete 会将其删除
repair_needed(需要维修)设备密钥不再将播放器绑定到其屏幕(credential_revoked、key_retired),或设备无法保留其身份。播放器保留其已保存的内容和密钥在设备上重置播放器:打开其操作员菜单,依次选择“设置”和“重置”。它会获得新的配对码:将该配对码交给你的智能体
payment_required(额度用完)项目的使用额度已用完,因此新内容无法送达屏幕。自2027年1月1日起,剩余额度为零或更少时同样显示此状态图标screenrig billing balance 显示剩余额度。按定价所述添加使用额度
session_revoked(连接已断)播放器的凭据被拒绝或吊销,或其屏幕已被删除,而播放器仍持有已保存的内容。它继续播放该内容并重试用 screenrig screen show scr_ID 确认屏幕存在。如果状态图标仍然存在,请在播放器的操作员菜单中重置播放器并重新配对
verify_fail(无法验证)下载的文件未通过大小、哈希或类型检查,因此播放器不使用它,并保留现有内容。更新代码为 hash_mismatchscreenrig screen clear-cache scr_ID 会让播放器重新下载其内容
storage_full(存储已满)设备没有足够空间容纳必须下载的内容,因此无法保存新内容释放设备上的存储空间,或缩小播放列表。缓存与存储说明如何判定能否放下
decode_unplayable(无可播放)播放器无法播放它必须显示的任何一项,且屏幕上没有其他内容无法播放的视频。Raspberry Pi 5 需要用 --codec hevc 上传视频
unavailable(无法显示)播放器没有已保存的内容,其分配未能解析,且没有更具体的状况适用查看 screen show 中的 manifest_upgrade 和 last_page_failure,修复它们指出的问题,然后 screenrig screen reload scr_ID
browser_unsupported(浏览器不受支持)运行 Web 播放器的浏览器不受支持。播放继续更新浏览器
app_unsupported(应用不受支持)screenRIG 应用的版本不受支持。播放继续播放器声明 update 时用 screenrig screen update-software scr_ID 更新,否则通过其应用商店或设备管理器更新
browser_warning(浏览器警告)运行 Web 播放器的浏览器版本过旧。播放继续更新浏览器
app_warning(应用警告)screenRIG 应用的版本过旧。播放继续播放器声明 update 时用 screenrig screen update-software scr_ID 更新,否则通过其应用商店或设备管理器更新
assignment_held(更新延迟)最近一次更新正在重试或已失败,或续期播放器会话已超过 10 秒。当前内容继续播放查看 screen show 中的 manifest_upgrade。页面与更新失败说明每个 state 和 code
decode_miss(一项已跳过)有一项无法播放,因此播放器会跳过它,继续播放其他内容无法播放的视频
offline_playing(离线播放)屏幕上有内容,且播放器与 screenRIG 的连接已中断 60 秒或更久。它播放已保存的内容恢复设备的网络。screen show 会报告 last_outage 及其 likely_cause
schedule_timezone(需要设时区)页面设有可见性排程,但屏幕没有时区,因此播放器忽略该排程,始终显示该页面screenrig screen update scr_ID --timezone America/Los_Angeles,附带屏幕的 IANA 时区
credits_low(额度偏低)剩余使用额度大于零且低于 1,000 个额度。2027年1月1日之前,剩余额度不构成停止播放的指令screenrig billing balance 显示剩余额度
content_partial(内容不全)只播放播放列表的一部分:manifest_upgrade.state 为 partial,missing_page_count 说明有多少页面被排除查看 manifest_upgrade.code:capacity 见缓存与存储,其余见页面与更新失败
paused(已暂停)有人在设备上暂停了屏幕。暂停会在 60 分钟后自动结束按遥控器上的播放/暂停键(Windows 上为 K)
syncing(更新中)播放器正在下载、准备或启用新内容,或正在续期其会话无。内容显示在屏幕上后,状态图标会消失。如果仍然存在,请查看 manifest_upgrade.state

需要更新播放器是状态图标旁的提示,不是状态图标。当播放器版本低于 screenRIG 支持的最低版本时显示,播放器会继续播放其已保存的内容。播放器声明 update 时用 screenrig screen update-software scr_ID 更新,否则通过其应用商店或设备管理器更新。

无法播放的视频

播放器使用设备的硬件解码器,按文件的编解码器、配置文件和分辨率解码视频。设备无法解码时,播放器会跳过该项:状态图标为 decode_miss;屏幕上没有其他内容时为 decode_unplayable。播放器日志中的 player.video_unusable 记录会指出 code(video_load_failed、video_play_failed、video_autoplay_blocked、video_stalled、image_load_failed、video_prepare_failed、video_first_frame_timeout 或 video_decode_failed),并附上播放器测得的 decoder、codecs、width 和 height。

screenrig media upload ./lobby-loop.mp4 --codec hevc
screenrig media upload ./lobby-loop.mp4 --preset signage-1080p30

视频默认以 H.264 上传。Raspberry Pi 5 没有 H.264 解码器:发往它的每个视频,无论尺寸,都请用 --codec hevc 上传。Raspberry Pi 4 播放 1080p,--preset signage-1080p30 限定尺寸。仅当播放该片段的每个屏幕都是原生播放器时才使用 hevc。替换播放列表中的媒体并重新发布。

将视频全为 H.264 的播放列表分配给播放器声明 video.h264_unavailable 的屏幕时,会被拒绝并返回 invalid_request。在混合内容中,该播放器会跳过 H.264 项目。

页面与更新失败

无法准备就绪的页面会被跳过,播放器继续播放其他页面。播放器会报告该失败,last_page_failure.code 是播放器自己的代码。screenrig events list --type playback.page_failed --screen-id scr_ID 会列出这些代码。

代码原因修复
gstreamer_playback_errorLinux 或 Raspberry Pi 播放器的媒体管线在播放某个视频时失败:它报告了错误、无法启动,或没有画面输出无法播放的视频
unsupported_content播放列表中含有播放器无法呈现的内容,即它不支持的原语或媒体类型参见平台对原始支持。替换该内容,或将播放列表分配给支持它的播放器

manifest_upgrade.state 说明内容更新进展如何:

状态含义
pendingscreenRIG 有该屏幕的新内容,而播放器尚未对其报告
downloading, preparing, activating更新正在进行。屏幕上有内容时,状态图标为 syncing
retrying某一步骤失败,播放器将在 retry_at 重试。状态图标为 assignment_held
failed更新已停止,且没有安排重试。状态图标为 assignment_held
blocked存储空间无法暂存新内容。状态图标为 storage_full
partial只播放播放列表的一部分。状态图标为 content_partial
current正在播放最新内容

manifest_upgrade.code 指出 retrying、failed、blocked 或 partial 状态的原因:

代码原因修复
download_failed内容下载失败:无法连接内容源站,或内容源站返回了错误检查设备的网络连接。播放器按退避间隔重试,retry_at 说明重试时间
hash_mismatch下载的文件未通过大小、哈希或类型检查screenrig screen clear-cache scr_ID
prepare_failed播放器无法准备好页面用于显示,或页面未能及时就绪查看 last_page_failure,并按其代码的提示修复页面
activate_failed新内容的第一页无法显示查看 last_page_failure,然后 screenrig screen reload scr_ID
manifest_invalid播放器因清单无效而拒绝了该修订,并保留上一次正常的内容。它不会重试该修订请在联系我们页面连同屏幕 id 一并报告
unsupported_content播放器丢弃了它无法呈现的内容。如果没有可播放的内容,更新失败且不再重试;否则为 partial同上述页面失败 unsupported_content
internal上述代码之外的播放器错误screenrig screen reload scr_ID。如果该代码仍然存在,请连同屏幕 id 一起报告
capacity, staged, storage_full, none_fit, transition_blocked, anchor_unavailable设备的存储计划缓存与存储

缓存与存储

下载修订之前,播放器会规划其存储:哪些页面的文件能放进它可使用的空间。原生播放器会在其存储卷上保留 128 MiB 空闲空间,并且不超出为其设置的任何配额。启动时,可用空间不足 512 MiB 的播放器会显示一条带有剩余空间的消息;该消息不是状态图标。

screen show 中的 storage.plan.fit 说明播放列表如何放入存储:

fit含义修复
fits整个播放列表都能放下无
fits_after_eviction, retention_reduced播放器丢弃不再需要的缓存文件(对于 retention_reduced,还包括其已保存的回退内容)后,播放列表即可放下无。没有页面被排除
partial部分页面放不下,被排除在外(excluded_pages)。其余页面正常播放释放存储空间或缩小播放列表
transition_blocked新播放列表的始终可见页面(第一个没有可见性排程的页面)无法与屏幕上的内容一起存放。更新会等待,当前内容继续播放,headroom_needed_bytes 说明还需要多少空间释放相应的存储空间,或缩小新播放列表
none_fit什么都无法加载:没有页面能放下,或播放列表中没有能放下的始终可见页面释放存储空间,或分配更小的播放列表

manifest_upgrade.code 重复该计划:blocked 更新时为 none_fit 或 transition_blocked,页面放不下的 partial 更新为 capacity,仍在填充的 partial 更新为 staged,写入失败时为 storage_full。fit 为 partial、transition_blocked 或 none_fit 时存在 storage_shortfall。

excluded_pages 的每个条目都有一个 reason:

原因原因修复
object_exceeds_capacity有一个文件单独就放不进播放器可使用的空间上传更小的版本(media upload --max-edge 或 --preset signage-1080p30),或使用存储空间更大的设备
page_exceeds_capacity每个文件单独都能放下,但页面的所有文件加在一起放不下减少页面上的文件数量,或换用更小的文件
capacity_excluded该页面被排除,以便其余页面能放下释放存储空间或缩小播放列表
descriptor_conflict播放列表将同一个文件列出两次,但大小或内容类型不同请在联系我们页面连同屏幕 id 一并报告
not_local播放器启动时恢复了已保存的内容,但没有存储的计划,而此页面的文件不在设备上让播放器联网:它会下载该页面
anchor_unavailable设备有空间,但始终可见的页面下载失败。这是下载失败,不是空间不足检查设备的网络连接。播放器会重试

分配大型播放列表之前先查询:

screenrig screen storage-forecast scr_ID --playlist-id pl_ID

它返回 fits、partial、none_fit 或 unknown,并附上播放列表所需的字节数和播放器的容量。unknown 表示该屏幕从未报告过存储情况。超过 24 小时的报告会标记为已过期。该命令不写入任何内容。出现存储失败时,返回结果会带有 storage_full 警告:请释放运行播放器的设备上的存储空间,然后重试该播放列表。

卡片

无法绘制的卡片会让其矩形区域留空,页面继续播放。播放器记录 card.failed;Web、Android 和 Windows 播放器会针对页面上的每张卡片和每个代码各报告一次 player.card_failed,附带 page_id、primitive_id、manifest_revision 和 code。数据已过期的卡片同样为空白:screenrig card data put --ttl 30m 可刷新它。

代码原因修复
unknown-card卡片 id 不在播放器的卡片库中使用卡片参考中的卡片
card-unavailable卡片在库中,但此播放器版本不包含它,或包含的主版本与页面指定的不同更新播放器,或在页面中指定它所包含的主版本
card-error卡片在绘制时抛出了错误(Web 播放器)。详细信息在浏览器控制台中对照卡片的参考页检查其属性
data-unavailable卡片的第一份数据文档未到达。卡片保持隐藏用 screenrig card data put 写入数据,或用 screenrig source show 检查其数据源
data-source-missing卡片指定了卡片数据,但播放器没有对应的数据源请在联系我们页面连同屏幕 id 和卡片 id 一并报告
cardml-invalidCardML 卡片的文件未通过检查请在联系我们页面连同卡片 id 一并报告
cardml-model-error, cardml-model-timeoutCardML 卡片的模型失败或超出了时间预算检查卡片的数据和属性
cardml-duplicate-keyCardML 卡片中的列表出现了重复的键。它保留之前的行为每一行指定各自的键
qr-too-long, wifi-too-long二维码内容或 Wi-Fi 信息超出二维码容量缩短 URL 或文本
invalid-target倒计时的目标无法解析将 target 设置为有效的日期和时间