| 名称 | jetson-video-recipe |
| 开源协议 | “Apache-2.0” |
| 描述 | >- 用于将Jetson编码器用例转换为一个经过验证的、表面中立的配方, 其中包含原生和PyNvVideoCodec在编解码器、预设、码率控制、 比特率、延迟、格式和配置文件方面的投影。 metadata: |
| 作者 | “Vinit Bansal vinitkumarb@nvidia.com” tags: [jetson, video-codec-sdk, pynvvideocodec, nvenc, recipe] languages: [python] data-classification: public |
Jetson 视频配方
目的
将工作负载意图转换为一个确定性的schema-2 nvcodec-recipe。保留用户的语义控制,显示默认假设,并将相同意图投影到原生Video Codec SDK和PyNvVideoCodec,但不声称已执行。
前提条件
- 本技能拥有规范的配方引擎 —
scripts/recipes/recipe_model.py及其scripts/recipes/data/encoder-intent-catalog.json。直接从安装的本技能调用引擎;它没有运行时设置或兄弟启动器依赖。 - 配方规划和结构验证不涉及媒体,可以在目标环境之外运行。不要为仅计划请求请求、检索、检查或转换媒体。
- 内容选择和来源归属属于后续的执行或测量工作流。仅在交接时使用该工作流的版本化内容工件;在仅计划工作中不要加载或强制其输入门。
check-live的设置证据是可选的。没有环境时,正常验证配方,返回诚实的unknown实时分类,并提供非破坏性的修复建议给jetson-video-setup;规划和重放验证保持完整且不变。如果未安装设置技能,请告知用户安装该技能。- 当提供了全新的 schema-1.2 设置环境时,必须进行验证,不能被忽略或由后备替换。其
capabilities块是已确认的 PyNvVideoCodec 编码器权威,因此pynvc检查无需单独报告。调用者还可以提供由jetson-video-capability拥有的可选编码器能力报告;该报告必须经过认证、绑定到该确切环境,并且任何不匹配都关闭为unknown或输入错误。仅凭能力报告并不能确定所选表面的就绪性或所选GPU的身份。把工件视为数据;不要导入兄弟技能代码。compatible结果仍不证明编码操作可行。
将此已安装技能解析到其规范绝对路径并设置 RECIPE_SKILL。确认直接隔离的入口点:
python3 -I "$RECIPE_SKILL/scripts/recipes/recipe_model.py" --help
如果缺失,报告 jetson-video-recipe 安装不完整。不要复制引擎、搜索另一个副本、修改 PYTHONPATH 或回退到未经验证的本地模型。
组合所请求的兄弟阶段
配方 plan 和 validate 不需要兄弟阶段、设置证据、目标或媒体。仅在请求实时就绪或修复时使用 jetson-video-setup;当平台支持推荐需要其文档结论时使用 jetson-video-capability;请求执行时使用 jetson-video-pipeline;请求测量时使用 jetson-video-benchmark。首先检查代理已安装的技能目录。如果兄弟技能存在,阅读其 SKILL.md 并调用其文档化的公共入口点;将工件作为数据传递,绝不导入兄弟代码。如果缺失,保留已验证的配方,并使用实际名称说明:我可以运行 <stage>,但它需要 <skill>,而该技能未安装。请安装 <skill> 并重试此阶段。仅计划工作或未请求的可选优化绝不要求兄弟阶段。
操作说明
- 收集意图。 对于仅请求客观质量指标(包括 PSNR 或 SSIM)的请求,只需说明本技能不提供这些指标,并且需要单独授权的质量工作流,然后停止。不要命名或推荐外部工具,不要提供配置或运行比较;不要请求媒体、探测、安装任何东西或启动操作。在收集任何其他遗漏字段之前,先解决互相排斥的码率控制意图。特别是,当同时提供 CQ 和平均比特率时,解释冲突,仅询问是保留 CQ 还是平均比特率,并停止。不要将比特率重新解释为上限,也不要询问用例、分辨率、帧率、格式、GPU、配置文件、预设或另一个字段,直到用户解决该选择。否则解决用例(
conferencing、live_streaming、vod、archival或lossless)、编解码器、宽度、高度、原始输入格式、整数帧率、GPU、预设/调优、码率控制或编码器质量优先级,以及任何显式的延迟、配置文件或缓冲约束。仅当后续执行或测量需要时才解决帧数。在将未经限定的“低延迟”请求分配到一个用例之前先询问。将配置文件视为与预设分离的比特流/下游兼容性控制:保留显式配置文件,但省略时让它由 SDK 选择,绝不自己发明命名的配置文件。 - 编写一个意图 JSON。 将调用者值保持与默认值分离。仅将调用者指定的控制值放入意图中,并将每个省略的控制留给经过认证的用例目录。不要将定性措辞转换为猜测的覆盖项:例如,“低延迟实时流”选择
live_streaming;它本身不请求bf=0或禁用 multipass。绝不要构建漂移的原生和 Python 意图。 - 使用配方引擎进行规划:
python3 -I "$RECIPE_SKILL/scripts/recipes/recipe_model.py" \
plan --intent "$INTENT_JSON" --output "$RECIPE_JSON"
- 使用前进行重放验证:
python3 -I "$RECIPE_SKILL/scripts/recipes/recipe_model.py" \
validate --recipe "$RECIPE_JSON"
不要手动编辑生成的配方。从更新的意图中重新生成。
5. 可选地将实时投影分类。 为所选表面运行 check-live。环境选项是可选的:
python3 -I "$RECIPE_SKILL/scripts/recipes/recipe_model.py" \
check-live --recipe "$RECIPE_JSON" \
--surface native --output "$LIVE_CHECK_JSON"
对于精确投影,省略时特意返回 unknown 并带有设置修复建议;它绝不臆造就绪性。要解析实况结果,使用 --environment "$ENVIRONMENT_JSON" 重复运行。在请求时对 pynvc 重复独立运行。Py 检查读取环境的 schema-1.2 capabilities 块。--capability-report "$CAPABILITY_REPORT_JSON" 是仅在该环境也提供时的可选 Py 优化;它必须绑定到相同的工件。它只替换选定的 Py 编码器 API 证据,而不替换环境的就绪性事实,因此原生时要省略。缺失可选证据永不失败,但提供的证据必须验证且绝不静默回退。compatible 结果意味着投影和实况 Py 证据一致;这不是操作证明。检查发出的分类,而不只是进程退出代码:精确的原生投影,如果经过认证的 AppEncCuda 运行被推迟,则返回 unknown,退出代码为 0,绝不能报告为兼容或就绪。Py CPU 缓冲区兼容性检查需要默认的 smoke 依赖子集;GPU 缓冲区模式额外需要仅由经过验证的 full-samples 环境提供的精确 Torch 事实。
6. 返回配方和假设。 报告 schema/种类、确切的便携工件标识、规范编码器意图、原生和 PyNv 投影、投影损失、默认值、原理,以及执行前仍需要的事实。
7. 在媒体工作前停止。 本技能绝不调用 AppEncCuda、AppDec、PyNvVideoCodec 示例应用程序、基准帮助程序或管道控制器。将执行路由到 jetson-video-pipeline,将性能测量路由到 jetson-video-benchmark。
使用 recipes-workflow.md 作为请求和输出约定,使用 recipes-knobs-and-constraints.md 获取精确的接受值和表面限制。
推荐规则
应用 Tuning and preset 中的调优、预设和匹配测量规则,以及 Profile selection 中的配置文件、格式和投影规则。
- 对于命名平台,将编解码器视为配方候选是支持声明。首先使用能力工作流的经过认证的文档结论,排除文档不支持的编解码器,并将未知结论保持为未知,而不是提供为支持。API 字段或条件“受能力门控”的候选不覆盖不支持的文档结论。
- 如果推荐发布了基于文档的支持结论,请消费能力结果并重现每个经过认证的候选行及其计数;绝不重新解释部分子集。
可用脚本
| 脚本 | 用途 | 参数 |
|---|---|---|
scripts/recipes/recipe_model.py |
规划、重放验证或实时检查一个规范配方及其原生/PyNv 投影。 | 直接使用 python3 -I 调用;使用 plan、validate 或 check-live 子命令并查看 --help。 |
故障排除
- 拒绝格式错误、遗留、混合、重复键、非有限或与确定性不匹配的配方文档。
- 将确切的不可表示控制保留为每表面投影损失。对于显式的
both,不要隐藏受阻的对端或静默丢弃控制。 - 不要为
auto请求选择执行表面。保留两个投影并将运行时选择交给jetson-video-benchmark或jetson-video-pipeline,在那里可以评估实时资格。 - 将缺失的实时字段视为
unknown,将显式的负字段视为unsupported。缺失的所选表面先决条件包括修复到jetson-video-setup;如果该技能缺失,请告诉用户安装它。两种状态都不改变便携配方本身。
限制
- 规划和验证不建立安装就绪性、文档支持、实时可用性、输出质量或性能。
- 本技能仅生成基本编码器配置;容器、转码、分割、解码验证和工件交接属于
jetson-video-pipeline。 - 客观质量测量(包括 PSNR 和 SSIM)超出了本技能的范围。