Pipeline Vidéo Jetson
Objectif
Exécuter les étapes codec d'exemples officiels et prouver que chaque consommateur a utilisé l'artefact exact produit par l'étape précédente. Utilisez cette compétence pour la vérification encode-then-decode, la transcodage natif H.264-vers-HEVC, les segments PyNvVideoCodec, le triage de décodage de conteneur, la vérification d'opération AV1, ou un package compact d'acceptation client.
Prérequis
- Exécutez l'opération sur le Jetson cible avec accès direct au GPU. Une identité
nvcodec-environmentde schéma-1.2 fraîchement validée issue dejetson-video-setupest optionnelle. Quand elle est fournie, elle est autoritative, et les preuves invalides ou obsolètes échouent en mode fermé sans secours local. L'agent peut l'obtenir auprès de la sonde publique en lecture seule du setup ; elle n'a pas besoin d'être fournie dans le prompt du client. - Sans preuve de setup, authentifiez uniquement la surface installée sélectionnée. Les routes natives inspectent le package dpkg fixe, les sources d'exemples officiels propriété du package, les outils de compilation et la liaison non-stub. Les routes PyNvVideoCodec nécessitent un environnement de setup authentifié ou l'exact
pynvc_interpreterabsolu de l'appelant ; n'analysez jamais un venv. Avant de demander ce chemin, invoquez la sonde publique du setup quand cette compétence est installée et inspectez son résultat typé. Ces vérifications en lecture seule n'installent, réparent, enregistrent et testent rien. - Les routes portant une recette nécessitent la compétence sœur
jetson-video-recipeet l'une de ses recettes validées de schéma-2. Si son CLI public canonique est présent, invoquez-le ; s'il est absent, préservezdependency_required, nommez cette compétence et indiquez à l'utilisateur de l'installer et de réessayer l'étape. Les routes de décodage/segmentation sans recette n'acquièrent pas cette dépendance. capability_reportest un membre optionnel de la demande d'encodage, jamais un obligatoire. L'autorité établie pour les capacités d'encodeur PyNvVideoCodec est le bloccapabilitiesde l'artefactnvcodec-environmentde schéma-1.2 ; une demande d'encodage qui ometcapability_reportest entièrement supportée et lit ce bloc. Quand la fraîcheur liée aux capacités est souhaitée, une demande peut porter en plus unnvcodec-encoder-capability-reportde schéma-1.0 produit parjetson-video-capabilitydu même artefact d'environnement. Quand il est fourni, ce rapport devient la preuve API Py encoder sélectionnée pour la vérification ; il ne remplace pas l'artefact d'environnement ou ses faits de préparation. N'ajoutez pas le membre à une demande construite indépendamment simplement parce que la surfacepynvcpeut être sélectionnée. Il est optionnel sur chaque surface, affecte uniquement la classification de capacité Py et doit être omis pour le natif ; l'absence n'échoue jamais.- Quand le setup est installé, lisez sa politique de contenu vidéo partagée et appliquez son portail d'entrée avant tout essai à sec ou exécution normale du pipeline. Le setup n'est pas requis uniquement pour cette politique : sans lui, exigez un exact chemin ou URL sélectionné par l'utilisateur, ne substituez jamais du média catalogue ou synthétique, et préservez l'URL source, la licence, l'attribution, le chemin, la taille et le SHA-256.
- Les routes PyNvVideoCodec qui encodent ou invoquent
advanced/decode.py, y compris encode/decode, segmentation et triage de conteneur Py, nécessitent un venvfull-samplesséparément validé. L'environnement par défautpynvc-smokeest une preuve de préparation du setup et doit bloquer ces routes avant la création de l'espace de travail ; retournez une dépendancejetson-video-setupstructurée et provisionnez un nouveau venv full-samples plutôt que de le mettre à niveau sur place. Si cette compétence est absente, indiquez à l'utilisateur de l'installer avant de réessayer. - Le contrôleur
encodedirect a une exception consommateur plus étroite :jetson-video-capabilitypeut lier le fixture brut déterministe du setup pour une opération smoke de capacité bornée exacte. Ce résultat est une preuve d'opération uniquement, jamais une preuve de pipeline ou performance représentative.
Composez les étapes sœur demandées
Les routes de décodage et segmentation sans recette ne nécessitent aucune sœur quand les prérequis SDK sélectionnés existent déjà. Ajoutez jetson-video-recipe uniquement pour une étape portant une recette, jetson-video-benchmark uniquement pour la performance demandée, jetson-video-setup uniquement pour l'installation, la réparation, ou une remise en lecture seule quand l'autorité Python enregistrée est requise, et jetson-video-capability uniquement pour un verdict de support demandé ou un artefact de capacité d'acceptation frais. Utilisez le catalogue de compétences installées du runtime agent avant chaque étape ; n'analysez pas de répertoires arbitraires. Si la sœur est présente, lisez son SKILL.md et invoquez son point d'entrée public documenté ; passez les artefacts en tant que données et n'importez jamais le code sœur. S'il est absent, préservez les étapes et artefacts complétés et dites, en utilisant les noms réels : Je peux exécuter <étape>, mais elle nécessite <compétence>, qui n'est pas installée. Installez <compétence> et réessayez cette étape. Ne promouvez jamais un workflow partiel vers complet ou ne nécessitez une sœur optionnelle.
Instructions
-
Appliquez la limite de portée. Pour une demande concernant uniquement les métriques de qualité objective, incluant PSNR ou SSIM, déclarez seulement que cette compétence ne les fournit pas et qu'un workflow de qualité séparément autorisé est requis, puis arrêtez. Ne nommez ni ne recommandez un outil externe, et n'offrez pas de configurer ou d'exécuter la comparaison. Pour une demande limitée à la capture, au transport, à l'IA, à l'affichage, ou à la latence glass-to-glass, déclarez que ces étapes sont en dehors de cette compétence codec et arrêtez sans nommer, recommander, ou offrir un autre outil ou workflow. Sinon, continuez immédiatement vers le portail média à l'étape 2 ; choisissez
encode_decode,native_transcode,pynvc_segments,container_triage,av1_verify, ouacceptanceuniquement après que ce portail se libère. -
Pour chaque demande restante de plan, essai à sec, ou exécution d'une route pipeline, y compris « plan uniquement » ou « ne pas exécuter », appliquez ce portail avant la sélection de route et avant l'inspection des prérequis, sœurs, références ou scripts. Ne décomposez pas une demande de pipeline gérée par média en une sous-tâche de recette sans média. Si le média est manquant, retournez
input_requiredet arrêtez avant l'évaluation de la cible, la navigation, la récupération, l'authentification, l'essai à sec, ou le lancement d'opération. Demandez uniquement le média manquant à ce portail ; n'inspectez pas aussi l'aide du contrôleur, ne décrivez ni ne planifiez la route, ne listez pas les étapes futures ou les remises, et ne demandez pas un interpréteur, environnement, recette, ou champ d'étape ultérieure. La réponse complète à ce portail terminal se compose uniquement deinput_requiredet une demande pour un chemin média exact local cible ou URL HTTP(S) fournie par l'utilisateur. Ne choisissez jamais de média de substitution. L'exception smoke de capacité ci-dessus s'applique uniquement au contrôleurencodedirect et ne doit pas être promouvue vers la complétude du pipeline. -
Canonicalisez et hachéz une entrée locale exacte. Pour une entrée URL, préservez l'URL exacte fournie par l'utilisateur, puis récupérez, canonicalisez et hachéz-la uniquement après que les portails d'éligibilité cible, autorisation et autorité runtime se libèrent.
-
Préservez explicitement
native,pynvc, ouboth. Traitez « n'importe lequel », « meilleur disponible », « choisis pour moi », et tout autre libellé de surface non spécifié commeauto, jamais commeboth. Réservezbothpour une demande explicite d'exécuter ou comparer les deux surfaces. -
Après le portail d'entrée et la classification de surface, sélectionnez exactement une autorité runtime pour chaque surface sélectionnée. Si l'appelant fournit une identité d'environnement de setup, validez et liez cet artefact exact à l'essai à sec et à l'exécution ; ne l'ignorez jamais ou ne substituez un secours local. Si PyNvVideoCodec peut participer et ni environnement ni interpréteur exact n'a été fourni, invoquez le
jetson-video-setupinstallé via sa sonde publique en lecture seuleprobe_nvcodec.py: utilisez--runtime pynvcpour Python explicite ou--runtime bothpourboth/auto, une--outputfraîche, et jamais--setup-candidate. Inspectez l'artefact frais ; seul un artefact live dont la surface Py sélectionnée est installée et dontpynvc.identity.statusestverifiedest utilisable. Capturez ce fichier exact comme identitéenvironmentportable du contrôleur avec exactementschema_version,kind, chemin absolu canoniquepath,size_bytes, etsha256minuscule ; n'importez pas le code sœur ou ne passez une sonde bloquée en tant qu'autorité. Si le setup est absent ou rapporte tout défaut de préparation, illisibilité, obsolescence, liaison ou lancement, demandez et fournissez l'exactpynvc_interpreteruniquement pourpynvc/bothexplicite. Pourauto, gardez Pynot_evaluatedet continuez uniquement une surface native éligible. Le contrôleur dérive une liaison locale privée, n'accepte jamais cette liaison d'une demande, et la revalide avant le lancement. Si l'authentification locale échoue, utilisez le setup pour cette surface exacte uniquement quand installé. -
Appliquez le portail
autoen utilisant uniquement l'autorité runtime sélectionnée : zéro surface éligible bloque, une s'exécute, et deux retournentselection_required; ne classez jamais les surfaces à ce portail. Avec deux surfaces éligibles, ce portail est inconditionnel : ne cherchez pas les anciens résultats ou ne faites d'évaluation comparative pour faire le choix. Demandez exactementnative,pynvc, ouboth, puis arrêtez avant l'essai à sec ou le lancement. Ne faites jamais confiance à l'affirmation d'un prompt qu'une surface est prête : établissez l'éligibilité à partir de l'autorité fournie ou fraîchement sondée. Sans preuve de setup ou exactpynvc_interpreterlocal, enregistrez PyNvVideoCodec commenot_evaluatedavec l'action retry ; ne laissez pas ce pair optionnel bloquer une route nativeautoautrement éligible. L'explicitepynvcoubothnécessite toujours l'une de ces deux autorités. -
Avant tout lancement codec, authentifiez chaque exécutable sélectionné à partir du package Video Codec SDK installé ou chaque échantillon Python de la roue sélectionnée et de l'interpréteur. Utilisez uniquement ces routes d'exemples NVIDIA authentifiés ; si aucune ne peut satisfaire une étape, rapportez que cette étape est bloquée.
-
Pour une demande
pipelinemulti-étapes, composez uniquement les sœurs requises. Si une étape de performance demandée nécessitejetson-video-benchmark, invoquez son contrôleur public installé ; s'il est absent, préservez les étapes de pipeline complétées et rapportez que l'étape benchmark estdependency_requiredavec une action install-and-retry. Exécutezdry_rundu pipeline, revoyez la recette complète et les arguments d'exemple, puis exécutezexecuteavec le chemin de résultat et d'espace de travail frais. Invoquez le contrôleur public de cette compétence directement :python3 -I {baseDir}/scripts/pipeline_controller.py \ --request request.json --workspace fresh-workspace \ --output result.jsonUne demande unique encode-then-independent-decode invoque
scripts/encode_controller.pyavec les mêmes trois arguments. Ce contrôleur est exécution uniquement : validez et revoyez sa recette et enveloppe de demande d'abord, puis invoquez-le une seule fois avec les chemins de sortie et d'espace de travail frais ; ne prétendez pas qu'il a effectué un essai à sec interne. -
Exigez des marqueurs positifs exacts et des comptages, aucun marqueur d'échec explicite, et des sorties fraîches non vides. Rouvrez et réhachéz chaque remise originale. Un décodeur indépendant doit consommer le chemin producteur exact, la taille et le SHA-256 et produire les images attendues.
-
Pour le transcodage natif, acceptez exactement un marqueur de complétude AppTrans authentifié sous l'une ou l'autre forme libérée :
(#totFrames=N)hérité ouTotal frame transcoded: Ncourant. Rejetez les marqueurs manquants, dupliqués ou mixtes. -
Préservez chaque résultat de segment ou de surface indépendamment. Un pair échoué produit un résultat partiel honnête plutôt qu'une complétude au niveau des résumés.
-
Pour l'acceptation, laissez le contrôleur valider et écrire ses neuf fichiers physiques pré-scellage et retourner
seal_pending: true; ceux-ci sont distincts des clés de référence et des lignes d'étape. Gardez les grands artefacts média/compilation externes, puis faites créer l'agent le manifeste de somme de contrôle en dernier—le contrôleur ne le crée pas.
Références
- Workflow du pipeline définit les routes, l'acceptation, le scellage et le contrat compact evidence-de-contenu et validateur pipeline-only.
- La politique de contenu vidéo partagée du setup définit le portail d'entrée exact de l'utilisateur et l'evidence de contenu commun.
- Contrat d'exemple officiel définit les routes autorisées et la preuve d'opération.
Scripts disponibles
Invoquez chaque script public directement en mode isolé :
python3 -I {baseDir}/scripts/encode_controller.py --help
python3 -I {baseDir}/scripts/pipeline_controller.py --help
python3 -I {baseDir}/scripts/validate_representative_content_summary.py --help
| Script | Objectif | Arguments |
|---|---|---|
scripts/encode_controller.py |
Exécutez un encodage lié à une recette suivi d'un décodage indépendant. | --request, --workspace, et --output. |
scripts/pipeline_controller.py |
Essai à sec ou exécution des six routes pipeline multi-étapes. | --request, --workspace, et --output. |
scripts/validate_representative_content_summary.py |
Réhachéz le média externe et validez les métadonnées de contenu compact sans les modifier. | Inspectez --help pour les arguments de résumé/entrée. |
Limitations
- Cette compétence couvre les étapes codec NVIDIA et leurs remises d'artefacts, non la capture, le transport réseau, l'inférence IA, l'affichage, ou la latence glass-to-glass.
- Elle n'implémente pas la mesure de qualité PSNR ou SSIM.
- Une requête de capacité, une sortie zéro, ou la création d'un fichier de sortie n'est jamais une preuve d'opération.
- La démultiplexion de conteneur est autorisée uniquement via libavformat intégré dans un exemple NVIDIA libéré authentifié.
Dépannage
- Retournez le portail exact échoué, le producteur, le consommateur, le chemin d'artefact et la raison.
- Préservez
input_required,selection_required,blocked,partial, etfailedplutôt que de prétendre un pipeline complet. - Rejetez les sorties obsolètes, les symlinks où interdites, la dérive chemin/taille/SHA, la malformation de la demande ou de l'evidence JSON, les comptages de images incorrects, et les marqueurs de complétude dupliqués.
- Réessayez au maximum une fois et uniquement après que l'evidence identifie une condition changée, telle qu'une dépendance réparée, un artefact fraîchement fourni, ou une liaison chemin/taille/SHA-256 changée. Répéter une commande échouée inchangée est interdite.