Pour autant que je sache, le pilote de périphérique fait partie de SW qui est capable de communiquer avec un type particulier de périphérique connecté à un ordinateur.
Dans le cas d'une webcam USB, le pilote responsable est UVC qui prend en charge tout appareil compatible UVC. Cela signifie que le système d'exploitation ou un autre programme informatique peut accéder aux fonctions matérielles sans avoir besoin de connaître les détails précis du matériel utilisé.
Pour cette raison, j'ai installé le pilote de périphérique UVC Linux en exécutant:
opkg install kernel-module-uvcvideo
Webcam a été reconnu par le noyau Linux: dev/video0
. Cependant, je ne pouvais toujours pas effectuer de streaming vidéo avec FFmpeg, car il me manquait l'API V4L2. J'ai installé V4L2, en configurant le noyau.
Mes requêtes sont:
- Comment le pilote UVC et le V4L2 sont-ils liés?
- Quel est le but de l'API V4L2?
- Si je n'ai pas installé UVC en premier, il serait installé avec V4L2?
LinuxTV fait référence: L'implémentation du pilote uvcvideo est adhérente uniquement à l'API V4L2 . Cela signifie que UVC fait partie de l'API V4L2?
Il est étonnant de voir combien la documentation que vous pouvez trouver pour Video4Linux2 - et rien de tout cela explique en fait ce que Video4Linux est .
Tout d'abord, Video4Linux2 est un framework de pilotes Linux . Les pilotes de framework ne contrôlent pas directement les périphériques directement. Au lieu de cela, ils fournissent un modèle abstrait d'une certaine classe de périphérique, dans ce cas des périphériques vidéo pour les applications à utiliser. Les frameworks de pilotes offrent trois avantages principaux:
Ainsi, le pilote V4L2 est un pilote de haut niveau qui pilote le pilote UVC, qui pilote le pilote USB qui pourrait piloter un pilote matériel encore plus bas.
Ce modèle Matryoshka est très courant dans l'arborescence des pilotes du noyau Linux. La V4L2 est l'un des exemples les plus complexes car certains appareils photo nécessitent d'accéder à de grands groupes de sous-appareils en plusieurs couches qui contrôlent l'appareil photo et acheminent la sortie de l'appareil photo entre divers composants tels que les processeurs d'images.
Vous pouvez toujours accéder au pilote UVC directement à partir de l'espace utilisateur à l'aide d'un fichier de périphérique et des appels système "ioctl", sans passer par le pilote V4L2, et vous pouvez toujours accéder au pilote USB sous-jacent directement à partir de l'espace utilisateur à l'aide de son fichier de périphérique et de "ioctl".
Étant un cadre général qui fournit des fonctionnalités communes à une large gamme d'appareils, V4L2 ne vous fournit pas toutes les fonctionnalités que le pilote UVC pourrait fournir (en supposant que votre appareil fournit réellement plus de fonctionnalités UVC que nécessaire pour prendre en charge V4L2) .
Donc, si vous deviez avoir un périphérique UVC qui fournit toutes les fonctions spécifiées dans la spécification UVC, alors pour utiliser réellement certaines de ces fonctions, vous devrez accéder au pilote UVC directement via un fichier de périphérique et un système "ioctl". , en supposant que le pilote UVC du noyau Linux prend en charge toutes les spécifications UVC.
Cependant, la signification de
est que dans le pilote actuel du noyau Linux UVC ne fournit en fait pas plus de support de fonction UVC que ce qui est nécessaire pour V4L2.
La prise en charge de V4L2 dans le noyau ne fournit pas en soi une prise en charge UVC ou USB ou une prise en charge matérielle USB de niveau inférieur.
la source