Journal scrcpy a 1 an

Posté par  (site web personnel) . Licence CC By‑SA.
33
8
mar.
2019

J'avais écrit un journal pour la sortie de scrcpy v1.0, il y a un an.

C'est l'occasion de vous présenter les évolutions depuis cette toute première version, l'application étant aujourd'hui en version 1.8.

scrcpy

(oui, c'est la même image que dans le premier journal, c'est comme ça)

Raccourcis

Plusieurs raccourcis ont été ajoutés, les plus utiles en pratique étant le clic droit pour BACK (ou pour allumer l'écran s'il est éteint) et le clic milieu pour HOME.

Wi-Fi

Scrcpy utilise adb, qui lui-même supporte les connexions sur TCP/IP, donc ça aurait dû fonctionner sans problèmes.

C'était sans compter sur un bug adb qui cassait adb reverse pour un device connecté par adb connect.

Pour contourner le problème, si adb reverse échoue, l'application utilise adb forward et la connexion est "inversée". Voir l'issue #5 pour plus de détails.

Évidemment, il ne faut pas s'attendre aux mêmes performances que sur USB, mais si le réseau n'est pas trop mauvais, et qu'on réduit le débit, ça marche à peu près :

scrcpy --bit-rate 2M --max-size 800

On avait fait une démo en vidéo : le téléphone est connecté en USB sur le PC de droite et en Wi-Fi sur celui de gauche.

Enregistrement

Le flux vidéo peut être enregistré dans un fichier, au format MP4 ou MKV :

scrcpy --record file.mkv

Le flux est toujours transmis entre le device et l'ordinateur en raw H.264, mais avec en plus les timestamps de chaque image. Le tout est muxé côté client.

C'est un contributeur extérieur, igorinov qui a proposé une première version, à partir de laquelle on a pu intégrer la fonctionnalité.

Il restait des problèmes empêchant de supporter le MKV, que j'ai pu résoudre grâce à l'aide de robUx4 lors du FOSDEM (1 et 2).

Si on tourne l'écran pendant l'enregistrement, le fichier contient des images de tailles différentes. Les lecteurs vidéo (au moins VLC, Firefox et mpv) se redimensionnent alors lors de la lecture.

Il est possible de désactiver le mirroring pendant l'enregistrement (--no-display). Là encore, c'est un contributeur externe qui avait commencé le travail.

Glisser-déposer un fichier

Lors d'un drag & drop d'un fichier vers la fenêtre de scrcpy, si le nom du fichier se termine par .apk, l'application est installée sur le device ; sinon, le fichier est poussé vers /sdcard/.

Ces deux fonctionnalités ont été implémentées par des contributeurs extérieurs (AdoPi a ajouté l'installation d'APK et npes87184 la copie de fichiers).

Crop

Cette fonctionnalité est apparue suite à un post sur /r/OculusGo. L'auteur utilisait scrcpy pour envoyer tout l'écran (les deux yeux de l'Oculus Go) vers le PC, puis en découpait une partie (pour ne garder qu'un œil) grâce à OBS.

J'ai donc proposé d'ajouter l'option --crop.

Au passage, en parlant d'Oculus Go, certains ont utilisé scrcpy pour partager une expérience de vue à la 3e personne (vidéo). J'ai trouvé ça original :)

Flag "secure"

Certaines applications, comme Silence, protègent certaines zones de l'écran pour éviter qu'elles apparaissent sur un affichage "non-sûr".

L'affichage de scrcpy est maintenant "sûr" :)

Audio

Malheureusement, Android ne permet pas de capturer l'audio système de la même manière que la vidéo. C'est bien dommage. Du coup, scrcpy ne transmet pas l'audio.

J'ai quand même investigué une solution basée sur AOA qui tombe en marche sous Linux. Ça reste sur une branche séparée (audio).

Allez voir l'issue #14 si ça vous intéresse.

Paquet Debian

Quelqu'un avait soumis un RFS pour fournir un paquet Debian. Malheureusement, il n'y a pas de nouveau.

Toute aide est la bienvenue ;-)

  • # Genymobile ?

    Posté par  (site web personnel) . Évalué à 1.

    Bonjour,
    Je vois dans le dépôt Github un référence à Genymobile. Tu es lié à ce projet ?

    • [^] # Re: Genymobile ?

      Posté par  (site web personnel) . Évalué à 2.

      Genymobile est une boîte dans laquelle j'ai été employé pendant 4 ans et demi. C'est en tant qu'employé que j'ai développé la version initiale de scrcpy, qu'on a publié en open source.

      blog.rom1v.com

      • [^] # Re: Genymobile ?

        Posté par  (site web personnel) . Évalué à 2.

        Ah d'accord.
        J'utilise Genymotion depuis pas mal de temps maintenant pour jouer sur PC.
        J'ai fais un retour sur un souci au niveau de la rotation de l'écran et un autre souci sur le fonctionnement sur machine à base de processeur AMD. On m'a gentiment envoyé promener sous motif qu'il n'y avait pas de support pour les jeux sous Genymotion.
        Je trouve cela dommage car même si ces problèmes surviennent pour un jeu, leur résolution ne peut qu'améliorer leur outil …
        D'ailleurs, le souci sur les processeurs AMD ne touche pas que le jeu.
        Bref, je n'ai pas insisté.

        En out cas, je vais essayer ton programme ce soir pour voir ce que ca donne.

        • [^] # Re: Genymobile ?

          Posté par  . Évalué à 1.

          Hello !

          Par curiosité, quel est le souci avec les CPU AMD ?

          • [^] # Re: Genymobile ?

            Posté par  (site web personnel) . Évalué à 2. Dernière modification le 08 mars 2019 à 12:02.

            Une grosse latence et le jeu ne se lance pas.
            Ca ne semble pas venir de la carte graphique car sur un autre poste avec processeur Intel, ca fonctionne très bien avec la même marque de carte (AMD/ATI).
            Dès que l'hôte à un processeur AMD, ca fonctionne mal.

  • # Remerciements

    Posté par  . Évalué à 3.

    Merci pour scrcpy et pour tout ce travail, j'avoue en faire une utilisation intensive au boulot ^_^

    • [^] # Re: Remerciements

      Posté par  (site web personnel, Mastodon) . Évalué à 5.

      Pareil, je m'en suis déjà servi pour plusieurs vidéos et même pour une démo live dans une conférence à la Pycon fr l'année dernière, donc merci pour le boulot et ce logiciel fort utile.

      • [^] # Re: Remerciements

        Posté par  (Mastodon) . Évalué à 3.

        Je viens de l'essayer c'est une tuerie. Dans une vie passée je travaillais sous Android, ça nous aurait été très très très utile !

        Je vais le filer à mon gamin qui veut s'enregistrer pour faire des vidéos Youtube :)

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # T'aurais pas un autre nom de soft ?

    Posté par  . Évalué à 5. Dernière modification le 08 mars 2019 à 09:19.

    LE soft a l'air bien (faudrait que je l'essaie), cependant quand je veux prononcer son nom, je donne l'impression de vouloir imiter un modem RTC qui établit une connection :

    exemple :
    - tu connais un soft permettant de controler un device androïd connecté en USB ?
    - scrcpy
    - Hein ?
    - scrcpy
    - quoi ?
    - scrcpy Ding Ding Ding

    • [^] # Re: T'aurais pas un autre nom de soft ?

      Posté par  (site web personnel) . Évalué à 6.

      scrcpy est à screen copy ce que strcpy est à string copy.

      blog.rom1v.com

      • [^] # Re: T'aurais pas un autre nom de soft ?

        Posté par  . Évalué à 1.

        Nice :)

      • [^] # Re: T'aurais pas un autre nom de soft ?

        Posté par  . Évalué à 6. Dernière modification le 08 mars 2019 à 09:36.

        Est-ce que ça le rend plus prononçable pour autant ;) ?

        Là je plaisante, mais juste à moitié. Une fonction C qui s'appelle strcpy me pose moins de problème (car réservé à des "initiés") qu'un soft qui porterait ce genre de nom (car potentiellement tout le monde peut en avoir besoin).

        Un nom c'est très important pour un soft. Certes un beau nom n'améliorera pas un soft pourri, mais un nom pourri peut rendre le meilleur des logiciels moins attirant et faire fuir les utilisateurs.

        • [^] # Re: T'aurais pas un autre nom de soft ?

          Posté par  . Évalué à -6. Dernière modification le 08 mars 2019 à 10:12.

          Why scrcpy?
          A colleague challenged me to find a name as unpronounceable as gnirehtet.
          strcpy copies a string; scrcpy copies a screen.

          Et il est fier avec ça.

          Un nom c'est très important pour un soft. Certes un beau nom n'améliorera pas un soft pourri, mais un nom pourri peut rendre le meilleur des logiciels moins attirant et faire fuir les utilisateurs.

          Exactement, les "linuxiens" ont du mal a intégré cette idée.

          • [^] # Re: T'aurais pas un autre nom de soft ?

            Posté par  . Évalué à 2.

            Bof, ce sont certains développeurs, le fait d'être linuxien ou pas n'a rien à voir. Il faut soit avoir un peu la fibre "commerciale", soit avoir suffisamment de recul pour s'en rendre compte. Que ce soit sous Linux, windows, mac, Android, appli web, … , n'importe quel développeur un peu jeune qui ne voit que l'aspect technique peut passer à côté de l'aspect "commercial" (j'utilise ici le mot "commercial" dans le sens de promouvoir son produit, pas forcément dans le sens de le vendre pour en tirer des bénéfices).

            • [^] # Re: T'aurais pas un autre nom de soft ?

              Posté par  . Évalué à -5.

              Les LL en js(sic!) de ce calibre sont plus soignés sur la comm.
              Pareil sous OSX.

              Non, y a quelque chose chez les linuxiens, un côté …

              Et je suis tiraillé car c'est mon OS principal depuis trop d'année et que ce genre de détail m'a toujours agacé.

              Oui la fonction sur la forme avant tout, on est d'accord, mais des dev libres non linuxien arrivent à concilier les 2.

  • # Le chieur

    Posté par  (Mastodon) . Évalué à 10.

    Quand on parle d'un soft aussi peu connu (mais qui gagne à l'être, je vais l'essayer pas plus tard que ce soir en rentrant !) il est toujours bon de rappeler en une ligne ce que c'est.

    J'ai bien vu le lien vers le journal de référence qui détaille tout mais :
    - c'est un clic de plus
    - je suis un fainéant
    - ça tue les ours blanc des Pyrénées de recharger une page supplémentaire quand une phrase de qques dizaines de caractères suffisent amplement pour donner du contexte
    - ça facilite les recherches ultérieures

    J'avais écrit un journal pour la sortie de scrcpy v1.0, il y a un an.

    => scrcpy est un logiciel permettant d'afficher et de contrôler des devices Android connectés en USB. La version v1.0 publiée il y a un an a donné lieu à un journal.

    Voilà, je vous remercie pour votre attention, vous pouvez reprendre une activité normal.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Le chieur

      Posté par  (site web personnel) . Évalué à 3.

      J'approuve ton patch.

      blog.rom1v.com

    • [^] # Re: Le chieur

      Posté par  (site web personnel) . Évalué à 2.

      Je me suis fait la même réflexion et j'ai encore râler intérieurement. Mais pour le coup j'étais à côté de la plaque, rien à voir avec une copie d'écran ! C'est donc pour ça que je ne comprenais pas les commentaires sur lesquels je comptais pour éclairer ma lanterne :<

      Merci à toi. (et au dev quand même)

      « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

      • [^] # Re: Le chieur

        Posté par  . Évalué à 2.

        La même ! Et joli boulot au passage, je me glorifie de n'avoir pas été faignant sur ce coup ;)

  • # .

    Posté par  . Évalué à 3.

    Lors d'un drag & drop d'un fichier vers la fenêtre de scrcpy, si le nom du fichier se termine par .apk, l'application est installée sur le device ; sinon, le fichier est poussé vers /sdcard/.

    C'est peut-être un choix que vous avez fait pour de bonnes raisons, mais j'ai toujours trouvé plus élégant de déterminer le type d'un fichier par son contenu plutôt que par son extension.

    • [^] # Re: .

      Posté par  (site web personnel) . Évalué à 6. Dernière modification le 08 mars 2019 à 21:15.

      Déterminer le type d'un fichier par son contenu est forcément heuristique. C'est plus complexe, et ici ça n'apporte rien (à part provoquer des comportements inattendus). En plus, un apk, c'est aussi un zip (ou un jar).

      Je trouvais plus gênant le fait qu'on ne puisse pas pousser de .apk vers /sdcard/ (puisque dans ce cas, ça l'installe). Mais c'est un compromis pour que ça reste simple d'utilisation pour les cas les plus courants.

      Au passage, à propos des formats de fichiers, je vous conseille Funky File Formats (slides).

      blog.rom1v.com

  • # Merci !

    Posté par  . Évalué à 1.

    Je l'utilise très souvent pour taper des textos notamment.

    En général, en ouvrant un point d'accès sur l'ordinateur et en connectant le téléphone à ce point d'accès, ou inversement.
    Et non, pas besoin de réduire quoi que ce soit, ça fonctionne bien avec le comportement par défaut.

    Question : pourquoi, s'il faut passer par adb forward quand on utilise adb connect, à cause d'un bug d'adb, ne pas utiliser dans tous les cas adb forward dans tous les cas et abandonner adb reverse ? Ça ne permettrait pas de simplifier les choses ?
    En tant qu'utilisateur je m'en fiche, je vois bien que ça râle et ça applique le contournement en wifi, mais l'outil se débrouille tout seul merveilleusement bien. Mais je suis curieux.

    • [^] # Re: Merci !

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 09 mars 2019 à 22:39.

      pourquoi, s'il faut passer par adb forward quand on utilise adb connect, à cause d'un bug d'adb, ne pas utiliser dans tous les cas adb forward dans tous les cas et abandonner adb reverse ? Ça ne permettrait pas de simplifier les choses ?

      Parce qu'en adb forward, c'est le PC qui essaie de se connecter au device, mais ce n'est possible qu'une fois que le serveur est démarré et qu'il a démarré sa socket en écoute. Du coup, il faut que le client réessaie de se connecter jusqu'à ce que le serveur sur le device soit bien démarré (donc pas optimal). Cf le message de commit :

      Keep the "adb reverse" mode as the default because it does not involve
      connection retries: when using "adb forward", the client must try to
      connect successively until the server listens.
      

      Et c'est plus fragile.

      Il n'y a pas ce problème dans l'autre sens : le PC démarre une socket en écoute, puis démarre le serveur… qui se connecte dès qu'il est prêt, la socket de l'autre côté est déjà là.

      blog.rom1v.com

  • # Suppôt de l'obsolescence programmée !

    Posté par  . Évalué à 2.

    The Android part requires at least API 21 (Android 5.0)

    et je fais quoi moi avec mon tél en Android 4 que je garde pour raison d'écologies ?

    NB: c'est humoristique hein, je sais bien que les API n'existent pas sur mon téléphone !

  • # Windows - adb : error no devices found

    Posté par  . Évalué à 1.

    bonjour,
    j'ai voulu utiliser ce logiciel sous windows et quand, après avoir branché mon samsung galaxy J3 en usb, je lance scrcpy j'ai l'erreur suivante :

    adb: error : failed to get feature set: nodevices/emulators found

    une suggestion ?

    rq: j'ai vu que sur certains smartphones il fallait activer certaines options, du coup j'ai activé le "débogage usb" par contre je n'ai pas trouvé d'option ressemblant à "USB debugging (security settings)"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.