Bonjour,
Je rencontre une difficulté concernant la capture vidéo via une carte USB. En particulier, lorsque je dois basculer la source entre PAL et NTSC, cela provoque un freeze de la carte. En interrogeant la carte avec v4l2-ctl, je constate que la fréquence et la résolution ne se mettent pas à jour correctement.
La seule solution que j'ai trouvée pour forcer la mise à jour est d'utiliser usbreset pour redémarrer la carte, mais cela présente plusieurs inconvénients :
- Temps d'attente long : Le redémarrage de la carte est relativement lent.
- Changement de chemin : Dans certains cas, après un redémarrage avec usbreset, le chemin de la carte peut changer, rendant l'accès compliqué.
L’objectif est donc de pouvoir redémarrer ou rafraîchir la carte rapidement après un basculement de fréquence, mais je fais face à un comportement imprévisible :
Lorsque je capture avec ffmpeg, un changement de fréquence génère souvent une erreur, entraînant l'arrêt du programme. Cependant, parfois l'enregistrement continue malgré une image figée ou noire, ce qui rend la situation encore plus complexe à gérer et m'oblige à surveiller en permanence la fréquence pour relancer ffmpeg.
Je cherche un moyen plus propre et plus rapide de redémarrer la carte sans avoir recours à usbreset. Idéalement, le processus devrait être plus réactif, car actuellement, après un redémarrage via usbreset, il faut de temps en temps attendre au moins cinq secondes avant que la carte soit réutilisable. De plus, il arrive que l'utilisation de usbreset donne un message d’erreur "no such device", alors que v4l2-ctl retourne les bonnes informations.
Mon idée est de détecter quand ffmpeg s'arrête, quelle qu'en soit la cause, puis utiliser usbreset pour redémarrer la carte et relancer l'enregistrement. Mais je cherche une alternative plus rapide et fiable que l’utilisation de usbreset, tout en minimisant les risques de changement du chemin de la carte.
Y a-t-il une méthode plus propre et plus rapide pour redémarrer ou rafraîchir la carte vidéo via du code Python ou C ? Existe-t-il une API ou une commande qui pourrait résoudre ce problème sans avoir besoin de redémarrer complètement la carte ?
Merci pour toute aide ou suggestion que vous pourrez fournir.
# Essayez
Posté par ZionCarrington . Évalué à 1 (+0/-0). Dernière modification le 18 février 2025 à 14:34.
Essayez v4l2-ctl --set-standard suivi d’une reconnexion logicielle rapide.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.