ISO/IEC 29341-13-10:预定录制——录制调度器服务

UPnP预定录制 — 第13-10部分:录制调度设备与控制点

ISO/IEC 29341-13-10 规定了 UPnP 网络中预定录制(ScheduledRecording)服务的架构,为在联网录制设备上调度、管理和执行媒体内容录制提供了标准化框架。该标准对于运行在多设备家庭网络环境中的现代数字视频录像机(DVR)和个人录像机(PVR)系统至关重要,使用户能够从网络中的任何控制点调度录制任务,并由任何有能力的录制设备执行。

29341-13-10 的真正价值在于其设备无关的调度模型:客厅中的控制点可以调度位于地下室的调谐器进行录制,只要两者都正确实现了 ScheduledRecording 服务。

录制计划管理与冲突解决

ScheduledRecording 服务的核心是 Schedule 资源,表示为包含录制计划条目列表的状态变量。每个条目指定源频道或节目标识符、开始时间和持续时间、录制质量配置文件和目标存储位置。服务暴露了 AddSchedule、DeleteSchedule、GetScheduleList 和 UpdateSchedule 等动作来管理这些条目。

29341-13-10 最重要的实践特性之一是其冲突解决机制。当新的录制请求与需要相同调谐器资源的现有预定录制重叠时,服务必须确定冲突是否可解决。解决策略包括基于用户分配的优先级进行优先级排序、建议替代时间段,或提醒用户手动解决冲突。标准定义了一种 ConflictEntry 数据结构,编码重叠调度的详细信息,使控制点能够向最终用户呈现清晰的冲突信息。

动作 用途 冲突行为
AddSchedule 创建新的录制计划条目 如果资源不可用则返回冲突错误
UpdateSchedule 修改现有计划条目 重新评估与现有计划的冲突
DeleteSchedule 删除计划条目 可能释放待处理计划占用的资源
GetConflicts 获取当前冲突信息 返回 ConflictEntry 结构列表
SetResourceAllocation 分配调谐器或存储资源 支持手动覆盖自动分配
冲突解决逻辑必须考虑录制前后的填充时间。一个常见的工程疏忽是假设录制是背靠背进行的,而实际上用户经常添加前导和后续填充时间,这会延长有效的资源预留窗口。

资源管理与调谐器分配

ScheduledRecording 服务维护录制设备物理和逻辑资源的模型,包括调谐器、转码器和存储卷。每种资源通过一组能力来描述——例如,调谐器支持的调制格式、转码器可用的输出配置文件或存储卷的可用空间和最大写入速率。

资源分配采用两阶段协议。在预留阶段,服务检查是否有足够的资源可用于请求的录制并临时预留它们。在提交阶段(在录制开始时间或附近发生),预留被转换为绑定分配。这种两阶段方法允许调度器处理最后一刻的变化——例如节目时间表变动或用户取消——而不会浪费资源预留。

与简单的单阶段方法相比,设计良好的两阶段资源分配器可以将录制成功率提高 15-25%,特别是在存在时间偏移节目或频繁时间表变化的环境中。

预定录制的工程设计见解

实现健壮的 ScheduledRecording 服务需要仔细关注几个工程细节。录制计划的持久存储至关重要——录制设备必须在断电和网络中断期间保留计划信息。标准建议使用具有原子写入操作的非易失性存储器,以防止断电期间计划损坏。

时区和夏令时处理是另一个令人惊讶的复杂方面。录制计划通常跨越夏令时转换期,标准规定所有计划时间应以 UTC 格式存储,并将本地时区偏移量记录为元数据。这样无论本地时区规则如何变化或设备的物理位置如何移动,都能正确解释计划。

最后,标准定义了一种录制通知机制,在预定录制开始、完成或遇到错误时提醒控制点。这些通知通过标准 UPnP 事件机制传递,控制点可以订阅以接收特定计划或设备上所有计划的状态更新。

切勿假设预定录制会成功完成。实施全面的错误监控和重试逻辑。常见的失败模式包括存储空间不足、信号丢失、编码错误以及其他控制点发起的非计划录制造成的资源冲突。

常见问题

问:ScheduledRecording 设备能支持同时录制多个节目吗?
答:可以,如果设备有多个调谐器或支持频道聚合。同时录制的数量仅受可用调谐器和转码器资源的限制。如果资源不足,AddSchedule 操作将返回错误。
问:服务如何处理同一节目的重叠录制请求?
答:标准允许去重检测——如果两个计划引用相同的节目标识符和质量配置文件,服务可以将它们合并为一次录制并引用多个存储位置,从而节省调谐器资源。
问:录制过程中存储空间用尽会发生什么?
答:服务应在空间耗尽前生成存储警告。如果由于空间不足导致录制失败,应保留部分录制内容并附带指示其不完整状态的元数据,允许用户决定是保留还是丢弃。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注