| 名称 | jetson-video-setup |
| 开源协议 | “Apache-2.0” |
| 描述 | >- 用于在Jetson上安装、修复、探测或验证原生NVIDIA Video Codec SDK或PyNvVideoCodec, 包括官方编码到解码示例以及注册环境恢复。 metadata: |
| 作者 | “Vinit Bansal vinitkumarb@nvidia.com” tags: [jetson, video-codec-sdk, pynvvideocodec, setup, nvenc, nvdec] languages: [python] data-classification: public |
Jetson视频设置
目的
探测、安装并独立验证实时Jetson上的原生NVIDIA Video Codec SDK和PyNvVideoCodec环境。设置负责安装就绪性,不负责编解码器支持结论、配方、基准测试或应用程序流水线。
操作前必读
- 阅读 setup-workflow.md,了解表面选择以及探测→计划→应用→验证的顺序。
- 在任何APT、venv或pip变更之前阅读 setup-install.md。
- 在消费或报告工件之前阅读 setup-output-contract.md。
选择表面
在步骤1或任何探测之前,解析请求的表面。“Video Codec SDK”、“VC SDK”、"native SDK"或nvidia-video-codec-sdk选择原生;“PyNvVideoCodec”、“PyNv”、"PySDK"或Python选择PyNvVideoCodec。在考虑纯短语之前匹配指定产品:"Video Codec SDK"是原生产品名称,即使它包含"video SDK"字样。一个真正独立的"video SDK"设置、安装、操作、就绪或仅报告请求是模糊的:只询问用户是想要原生Video Codec SDK、PyNvVideoCodec还是两者,然后停止,在探测、行动或描述未来的探测、检查、安装步骤或报告内容之前。仅报告意图不选择表面,也不授权扩大到两者。
仅当明确要求时才选择两者,并在请求的其余部分复用该选择。一个狭窄的例外适用于消费者技能的auto选择门:该消费者可以仅调用设置了--runtime both的只读探测来评估两个候选者。这并不为安装、验证、执行或最终报告选择两者。
保持所选表面独立。原生失败不得抑制可操作的Python表面,Python失败也不得抑制原生。只有在两个验证链都通过后,才报告聚合的both就绪状态。
组合请求的兄弟阶段
设置的探测、计划、安装和验证工作流不需要兄弟技能。当复杂请求还要求产品能力、配方、性能或流水线工作时,仅添加相应的jetson-video-capability、jetson-video-recipe、jetson-video-benchmark或jetson-video-pipeline阶段。首先检查代理的已安装技能目录。如果兄弟存在,阅读其SKILL.md并调用其文档化的公共入口点;作为数据传递工件,永不导入兄弟代码。如果不存在,保留已完成的设置结果并说,使用实际名称:我可以运行<阶段>,但它需要<技能>,该技能未安装。安装<技能>并重试此阶段。切勿为未请求的阶段获取兄弟技能。
工作流
- 确认执行在Jetson上。在非Jetson主机上,仅提供指导,不做实时就绪声明。
- 使用
probe_nvcodec.py --runtime native|pynvc|both --output ...探测所选表面。仅当请求明确选择两个表面或用于上述狭窄的只读消费者auto候选检查时,才使用both。探测是只读的。使用相同CLI的--reauthenticate操作重新认证保存的工件。 - 对于PyNvVideoCodec,使用固定的已验证虚拟环境注册表或用户提供的精确解释器。切勿扫描或猜测虚拟环境。如果用户说PyNvVideoCodec已安装但未提供精确路径且注册表未就绪,请在任何准备工作之前询问路径。缺失的已注册解释器使该注册表未就绪;已注册但无法启动的解释器会阻止所选Python表面。切勿扫描或回退到其他环境。
- 使用
plan_install.py生成安装计划,然后运行plan_install.py validate PLAN。仅报告请求在探测后停止;plan-only绝不授权变更。仅对明确的安装/设置请求使用setup-install意图;该请求仅授权已审查计划中完整未更改的批次。 - 仅执行已审查的
setup-install计划中的字面命令。以当前用户身份逐字调用每个发布的argv,包括标记为privilege: "root"的步骤;切勿添加sudo前缀,因为plan_install.py拥有授权的内部sudo -n升级以进行APT操作。plan_install.py拥有APT刷新、预览和应用操作;lock_pip_reports.py拥有干净虚拟环境创建和锁定的pip应用。APT执行会重新生成规范计划,并在变更之前重新检查实时候选、来源、源和模拟证据。 - 重新探测已完成的表面。对原生运行
verify_native.py,对Python运行verify_pynvc_sample.py。每个设置证明使用已安装版本官方示例将一个640×360 NV12帧编码为H.264,然后独立解码该新鲜比特流。原生以及Python在--profile full-samples下精确解码为345,600字节。默认Python配置文件pynvc-smoke使用advanced/decode_perf.py解码一个有界帧,该文件不写原始输出,因此它仅证明帧生成。真正需要Torch的消费者——Python编码基准测试、流水线或完整原始解码证明——在pynvc-smoke下被阻止;如此说明并指出补救措施:显式使用plan_install.py --profile full-samples提供full-samples虚拟环境。仅退出码为零永远不是证明:要求配置文件的精确正向标记和计数。只有通过的验证器才能将所选表面从探测partial提升为最终就绪结论。 - 在就绪的Python验证之后,仅使用
verify_pynvc_sample.py --register-current --output READY_REPORT发布固定注册表。 - 报告检测到的Jetson Linux版本、产品版本、独立表面结论、阻止因素和工件身份。
仅当用户明确请求新设置或重新安装时才使用--fresh-setup。它绝不允许删除工作的基础包。全新Python设置还需要唯一的、先前不存在的--venv。该--venv必须是持久位置下的绝对路径,例如/home/ubuntu/.venvs/nvcodec-fresh;切勿将其放在当前工作目录或任何临时运行、会话或证据树中,因为您发布的注册表比该目录更持久。相对--output名称相对于工作目录解析,因此将设置报告同样写入持久位置。
直接设置脚本
在构建参数之前,使用python3 -I运行每个公共CLI并检查其--help。
| 文件 | 公共职责 |
|---|---|
scripts/setup/probe_nvcodec.py |
发出或重新认证只读实时nvcodec-environment schema 1.2工件。 |
scripts/setup/plan_install.py |
计划和验证所选组件;仅执行自己的已审查APT刷新/预览/应用操作。 |
scripts/setup/lock_pip_reports.py |
创建新虚拟环境并物化/应用认证的pip锁定。 |
scripts/setup/verify_native.py |
构建包拥有的AppEncCuda/AppDec并验证固定的原生编码→解码冒烟测试。 |
scripts/setup/verify_pynvc_sample.py |
认证并运行wheel拥有的Python编码/解码示例,发出就绪工件,并认证已验证虚拟环境注册表链。 |
scripts/setup/setup_contract.py |
这些设置CLI的私有通用机制:严格JSON、有界命令和公共APT绑定;切勿将其作为CLI调用。 |
没有设置调度器。直接调用这五个公共CLI。设置不得从另一个技能导入Python代码,另一个技能也不得导入设置的私有实现。
就绪性与范围
- 库存或导入存在不是操作证明。
operation_verified要求两个官方操作、其正向标记和新鲜的非空比特流。原生和Pythonfull-samples还要求精确的解码帧数和原始输出大小;Pythonpynvc-smoke仅要求其两个精确的单帧生成标记,并且不声称原始解码工件。- 仅退出码为零或创建输出文件不足。
- 设置仅发出有界的基线Py API查询观察和原始原生示例摘要作为支持性就绪证据。它不发出完整解码器元组矩阵或产品支持结论;这些问题请使用
jetson-video-capability。 - 对于配置、测量和交接工作,使用
jetson-video-recipe、jetson-video-benchmark和jetson-video-pipeline。 - 本地探测仅证明检测到的堆栈和最小版本门;它不证明版本的新鲜度或与此目标兼容的最新版本。仅当成功检索了当前的官方NVIDIA文档(记录URL和检索日期)确定版本新鲜度和与认证目标身份的兼容性时,才调用版本
latest或newest compatible。否则将newest-compatible报告为unknown并指向官方兼容性文档;仅本地APT状态、失败源或任一事实不足。 - 对于仅质量问题(如PSNR或SSIM),说明设置不提供该问题,并且需要单独授权的质量工作流,然后停止;不要安装、调用、命名、推荐或提供设置外部质量工具。
安全
- 仅从配置的、签名认证的公共NVIDIA Jetson源(
repo.download.nvidia.com/jetson/common或/som,精确的rNN.N/main)接受原生SDK/CUDA包。基础先决条件可以使用另一个已配置的、签名认证的APT源。将每个候选绑定到其精确源记录,永不添加或更改源或密钥。 - 保持凭据远离argv、日志、工件、stdout和stderr。
- 保留精确计划、包、解释器、工件和源身份。
- 使用新鲜的输出/工作/构建路径。切勿覆盖证据或在重新刷新、驱动程序/包更改或虚拟环境替换后重复使用它。