jetson-video-pipeline

Par nvidia · skills

À utiliser lors de l'exécution et de la vérification des workflows d'encodage/décodage, de transcodage, de segmentation, de décodage de conteneur, AV1 ou d'acceptance du Jetson Video Codec SDK ou de PyNvVideoCodec, avec des transferts d'artefacts précis.

npx skills add https://github.com/nvidia/skills --skill jetson-video-pipeline

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-environment de schéma-1.2 fraîchement validée issue de jetson-video-setup est 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_interpreter absolu 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-recipe et 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éservez dependency_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_report est un membre optionnel de la demande d'encodage, jamais un obligatoire. L'autorité établie pour les capacités d'encodeur PyNvVideoCodec est le bloc capabilities de l'artefact nvcodec-environment de schéma-1.2 ; une demande d'encodage qui omet capability_report est 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 un nvcodec-encoder-capability-report de schéma-1.0 produit par jetson-video-capability du 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 surface pynvc peut ê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 venv full-samples séparément validé. L'environnement par défaut pynvc-smoke est une preuve de préparation du setup et doit bloquer ces routes avant la création de l'espace de travail ; retournez une dépendance jetson-video-setup structuré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 encode direct a une exception consommateur plus étroite : jetson-video-capability peut 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

  1. 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, ou acceptance uniquement après que ce portail se libère.

  2. 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_required et 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 de input_required et 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ôleur encode direct et ne doit pas être promouvue vers la complétude du pipeline.

  3. 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.

  4. Préservez explicitement native, pynvc, ou both. Traitez « n'importe lequel », « meilleur disponible », « choisis pour moi », et tout autre libellé de surface non spécifié comme auto, jamais comme both. Réservez both pour une demande explicite d'exécuter ou comparer les deux surfaces.

  5. 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-setup installé via sa sonde publique en lecture seule probe_nvcodec.py : utilisez --runtime pynvc pour Python explicite ou --runtime both pour both/auto, une --output fraîche, et jamais --setup-candidate. Inspectez l'artefact frais ; seul un artefact live dont la surface Py sélectionnée est installée et dont pynvc.identity.status est verified est utilisable. Capturez ce fichier exact comme identité environment portable du contrôleur avec exactement schema_version, kind, chemin absolu canonique path, size_bytes, et sha256 minuscule ; 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'exact pynvc_interpreter uniquement pour pynvc/both explicite. Pour auto, gardez Py not_evaluated et 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é.

  6. Appliquez le portail auto en utilisant uniquement l'autorité runtime sélectionnée : zéro surface éligible bloque, une s'exécute, et deux retournent selection_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 exactement native, pynvc, ou both, 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 exact pynvc_interpreter local, enregistrez PyNvVideoCodec comme not_evaluated avec l'action retry ; ne laissez pas ce pair optionnel bloquer une route native auto autrement éligible. L'explicite pynvc ou both nécessite toujours l'une de ces deux autorités.

  7. 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.

  8. Pour une demande pipeline multi-étapes, composez uniquement les sœurs requises. Si une étape de performance demandée nécessite jetson-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 est dependency_required avec une action install-and-retry. Exécutez dry_run du pipeline, revoyez la recette complète et les arguments d'exemple, puis exécutez execute avec 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.json

    Une demande unique encode-then-independent-decode invoque scripts/encode_controller.py avec 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.

  9. 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.

  10. 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é ou Total frame transcoded: N courant. Rejetez les marqueurs manquants, dupliqués ou mixtes.

  11. 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.

  12. 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

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, et failed plutô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.

Skills similaires