scrcpy en détail : miroir et contrôle Android avec peu d’installation sur l’appareil
Une explication du client C, du serveur Java temporaire, d’ADB, des sockets vidéo, audio et contrôle, des connexions USB/TCP, des permissions et de la licence Apache-2.0 dans scrcpy 4.1.
Positionnement et signal actuel
scrcpy est l’outil Genymobile d’affichage et de contrôle Android par USB ou TCP/IP, avec un hôte Linux, Windows ou macOS. Le dépôt comptait environ 146 126 étoiles lors de la collecte et la version 4.1 ajoutait notamment VP8 et VP9 en juillet. Il ne demande ni root ni application persistante sur le téléphone; l’accès repose sur ADB et l’autorisation de débogage confirmée par l’utilisateur.
Usages et fonctions principales
Les usages comprennent l’observation d’un vrai téléphone pendant le développement, l’enregistrement de démonstrations, le contrôle clavier-souris, la sélection d’appareils sur un banc de test et les flux caméra ou écran virtuel. Le projet gère vidéo, audio à partir d’Android 11, enregistrement, presse-papiers bidirectionnel, transfert de fichiers, affichages virtuels, entrées HID et manettes. La disponibilité dépend de la version Android, des encodeurs et du système hôte.
Architecture et fonctionnement
scrcpy comprend deux parties : un client C sur l’hôte pousse et démarre par ADB un serveur Java sur l’appareil. Vidéo, audio et contrôle utilisent des sockets séparées; chaque canal média peut être coupé. L’appareil encode son écran, puis l’hôte décode avec FFmpeg et affiche avec SDL. Les images sont normalement rendues dès leur arrivée plutôt que conservées dans un long tampon, ce qui réduit le délai interactif.
Socle technique et limites système
Le code hôte est surtout en C, le serveur appareil en Java, autour d’ADB, FFmpeg, SDL 3, libusb, Meson et Ninja. Les entrées partent de l’hôte vers le téléphone; rotation et dimensions sont surtout traitées côté appareil. Les performances dépendent de l’encodeur matériel, de la résolution, du débit, de la liaison USB ou Wi-Fi et du décodage hôte. Les chiffres d’exemple ne garantissent rien pour un modèle précis.