[Python] Tenter de trouver de la performance sous un RPi0

Salut, je cherche a régler des troubles de performances avec mon code. J’arrive à afficher tout et faire les grandes lignes, sous Windows j’ai bien sur de bonne performance, mais sous le Pi c’est affreux.

J’ai passé à une version Python de mon projet parce que le Pi0 avais un lag énorme avec Chromium, mais la lecture audio était fluide. J’avais également un problème de lecture de mes stream MJpeg de mes caméras (en lecture, il ne le stream pas out).

Alors le code a examiner est ici:

Problèmes a résoudre;

  • La lecture d’un stream est lent, dans le code vous avez 2 moyen de le lire, via le MJpeg stream ou via une capture (image statique). Par défaut j’active le mode « preview » qui rafraichis l’image au 5 secondes mais j’ai un lag qui ce crée avec le temps. En mode « live » il stream quelques secondes et après sa lag voir sa Freeze complètement. Je n’ai pas de moyen de garder un effet « en direct » d’une manière ou de l’autre. Dans le code ont voit que je le démarre dans un Thread, ce qui l’aide, car sinon impossible d’avoir un affichage sur l’application
  • La lecture de la musique est problématique. Aucune stabilité audio dans le sens que, malgré le buffer qui est réglé, il perd la capacité de sortir le son, ce problème commence à affecter aussi mon service « espeak » qui dit en parlé l’heure … à chaque heure. La solution la plus simple est de redémarrer le service relié, dans le cas du lecteur Python, un stop/play, et dans le cas de mon moule eSpeak, une reconnection du BT. Ce qui vient à me dire que le problème n’est peut-être pas l’application mais la gestion de l’audio.
    Je sais que pour mon Bluetooth je dois utiliser Pulse Audio, et que dans mes commande il y a un « serveur Pulse », ce qui doit être le « mixer logiciel ». Dans mon processus de reconnection BT, je redémarre ce service. Alors est-ce que c’est PulseAudio qui pourrait avoir des problèmes de performances ? Quand le son « coup » j’ai souvent un petit « grichement » avant, un peu comme lors de la parte d’un signal radio. Et sa peut couper quelques instant revenir et disparaitre pour de bon, comme si « je capte pas bien la radio », mais ce n’est pas le BT en lui même car il est à moins de 60cm l’un de l’autre en ligne direct sur mon bureau, que j’ai jamais eu ce trouble avant avec le Pi (juste depuis le code Python).

Quelques infos;

  • CPU 4-5% (selon TOP)

  • MEM 29% stable (selon TOP)

  • Ma config est 128MB GPU

  • Les caméras sont en local sur mon serveur 2Gbps (bond balanced)

  • Infos de stream :

    Feed camera1.ffm

    Stream type kbit/s codec Parameters
    0 video 2048 mjpeg 720x480, q=1-15, fps=5
    1 video 200 mjpeg 720x480, q=1-15, fps=2

Et si vous voulez savoir tout le reste de mon projet;