WINDOWS7.md
Rama main · réplica de lectura del repositorio original.
# Édition legacy Windows 7
Le bundle Windows normal embarque Python 3.12, qui ne fonctionne pas sous
Windows 7 et provoque notamment l'erreur
`api-ms-win-core-path-l1-1-0.dll manquant`. L'édition legacy utilise le
dernier runtime officiel adapté à Windows 7 : **CPython 3.8.10 x64**.
Elle embarque le code actuel de `blinkpy 0.25.9`. Seules les métadonnées de sa
roue sont rétroportées vers Python 3.8, avec les dernières dépendances encore
installables sur cette version. Le code reçu de PyPI est vérifié par son
SHA-256 avant modification.
Le direct propose **WebRTC et MSE**, au choix dans les réglages. Le profil
legacy embarque une pile WebRTC figée pour Python 3.8 et les DLL Windows 7 :
`aiortc 1.9.0`, `PyAV 12.3.0`, `cryptography 42.0.8`, `pyOpenSSL 24.1.0` et
`pylibsrtp 0.10.0`. Ces versions ne remplacent pas celles du bundle moderne.
MSE reste disponible ; aucune modification du TLS du relais Blink n'est
nécessaire pour ce portage.
Le magasin de certificats Mozilla de `certifi` complète celui de Windows 7 :
les connexions Blink restent strictement vérifiées même si les autorités
racines récentes ne sont plus distribuées à cette ancienne installation.
## Construire l'artefact
Le workflow `build-win7.yml` tourne automatiquement à chaque poussée sur
`main`, aux côtés des contrôles des éditions normales. Il peut aussi être
lancé à la main dans GitHub via **Actions → Build Windows 7 (legacy)
→ Run workflow** ; l'artefact téléchargeable s'appelle alors
`blink2video-windows7-x86_64-legacy`.
La même recette est réutilisée (`workflow_call`) par `release.yml` : à chaque
étiquette de release stable `vX.Y.Z`, le zip
`blink2video-windows7-x86_64-legacy.zip` est publié comme asset
supplémentaire de la [dernière release](https://github.com/nico579/blink2video/releases/latest),
au même tag que les trois éditions normales, plutôt que sur un tag ou une
numérotation `experimental.N` séparés. Chaque build est vérifié
automatiquement avant publication (démarrage, ffmpeg, TLS Blink, suite de
tests complète), mais contrairement aux trois autres archives, aucun
`.sha256` n'est publié à côté. Un échec de ce job n'empêche jamais la
publication des trois éditions stables : c'est une édition best-effort, hors
support Microsoft.
Le build exige également que WebRTC soit réellement importable et exécute
dans le bundle un échange H.264 High local : MPEG-TS, ICE/DTLS/SRTP, trois
images décodées et fermeture des connexions. Les imports PE normaux et
différés sont contrôlés contre une liste d'API post-Win7 connues. Ce contrôle
statique ne remplace pas l'exécution sur Windows 7.
La validation manuelle sur une vraie VM Windows 7 SP1 (section suivante)
reste recommandée avant de faire confiance à un build pour un usage réel :
les vérifications automatiques ci-dessus ne la remplacent pas.
En local, la construction exige Windows x64 et l'interpréteur **CPython 3.8.10
officiel de python.org** :
```powershell
python build.py --win7 --propre
```
Les environnements et sorties restent séparés du build normal dans
`build_venv_win7`, `build-win7` et `dist-win7`. Les deux éditions partagent les
mêmes sources applicatives dans `main` ; seule cette enveloppe de construction
legacy est distincte.
## Préparer la VM
1. Installer Windows 7 SP1 64 bits, 2 CPU, 4 Go de RAM, réseau NAT, puis créer
un snapshot propre.
2. Installer les mises à jour Microsoft nécessaires, au minimum KB2533623. Si
une erreur UCRT apparaît, installer aussi KB2999226 et le redistribuable
Visual C++ 2015-2019 x64 officiel, puis redémarrer.
3. Ne pas installer Python dans la VM : le test doit prouver que le bundle est
réellement autonome.
4. Copier puis extraire l'archive dans `C:\blink7` (ne pas l'exécuter depuis le
ZIP ni depuis un dossier partagé VirtualBox).
5. Ne jamais télécharger une DLL isolée depuis un site tiers.
## Quel navigateur utiliser pour WebRTC ?
Choix conseillé : **Supermium 144 R5 x64**. **Thorium Legacy 122 SSE3 x64**
est une autre option validée. Installer depuis les publications officielles
ci-dessous, ouvrir l'adresse locale affichée par blink2video, puis sélectionner
**WebRTC dans les réglages du direct**. Aucun pack de codecs supplémentaire
n'est nécessaire pour ces deux navigateurs.
| Navigateur testé | WebRTC natif H.264 High sous Win7 | MSE | Conseil |
| --- | --- | --- | --- |
| [Supermium 144.0.7559.256 R5 x64](https://github.com/win32ss/supermium/releases/tag/v144-r5) | Validé sur Salon, Terrasse1 et jardin ; contrôle sur mire le 7 septembre | Validé sur Salon et sur mire | Premier choix pour WebRTC |
| [Thorium Legacy 122.0.6261.171 SSE3 x64](https://github.com/Alex313031/thorium-legacy/releases/tag/M122.0.6261.171) | Validé le 7 septembre sur les trois caméras, 720p et 1080p | Validé sur Salon et sur mire | Alternative fonctionnelle, moteur ancien |
| Firefox ESR 115.39.0 x64 + OpenH264 2.6 | Échec : l'offre ne contient que H.264 Baseline | Conserver ce mode déjà fonctionnel sur cette VM | Utiliser MSE |
| [r3dfox 153.0.3 portable x64](https://github.com/Eclipse-Community/r3dfox/releases/tag/v153.0.3) | API `RTCPeerConnection` absente, même avec `media.peerconnection.enabled=true` dans un profil de test | Essai automatique bloqué par la politique de lecture ; non validé | Non recommandé pour WebRTC sur cette configuration |
Essais dans VirtualBox, Windows 7 SP1 x64, 1 CPU et 2 Go de RAM, navigateurs
visibles et profils isolés. Les essais Chromium désactivent l'accélération GPU :
ils prouvent le décodage sans GPU, pas la compatibilité de tous les pilotes.
Sur Thorium, la lecture a avancé pendant six secondes sur chaque caméra,
avec 86, 77 et 167 images présentées respectivement. Le module était libre
après chaque arrêt. Ces validations fonctionnelles ne constituent pas un
benchmark comparatif ; le réveil de Terrasse1 a notamment allongé son démarrage.
**Pas de mode WebRTC réencodé ni de conversion automatique vers Baseline.**
En cas d'incompatibilité, sélectionner explicitement **MSE** dans les réglages.
Une vidéo qui fonctionne en MSE ne garantit pas les mêmes profils en WebRTC :
les deux chemins de décodage du navigateur sont distincts. Si aucune image
n'apparaît, arrêter le direct avant de changer de mode ou de navigateur.
Ne pas désactiver le pare-feu ni la sécurité TLS pour résoudre un problème de
codec. Ne pas considérer ces essais comme une garantie de sécurité pour la
navigation Internet : Windows 7 reste hors support, et Thorium testé repose
sur un ancien moteur Chromium.
## Essai progressif
Depuis `cmd.exe`, dans `C:\blink7\blink2video` :
```bat
blink2video.exe --version
blink2video.exe --help
blink2video.exe smoketest
blink2video.exe smoketest --webrtc --report webrtc.json
blink2video.exe login
blink2video.exe list
blink2video.exe download --from usb
blink2video.exe merge
blink2video.exe serve
```
`--version` doit contenir `Windows 7 legacy`. Vérifier ensuite le 2FA, le
téléchargement USB Gen2 et cloud, le direct, puis `start`, `stop` et
`autostart`. IE11 n'est pas une cible.
Pour le direct WebRTC sous Windows 7, le navigateur testé est
[Supermium 144.0.7559.256 R5](https://github.com/win32ss/supermium/releases/tag/v144-r5),
édition x64. Le 6 septembre 2026, dans une VM VirtualBox Windows 7 SP1,
les caméras Salon, Terrasse1 et jardin ont produit des images décodées et
une lecture qui avance en WebRTC, sans réencodage. Le contrôle MSE sur Salon
a également réussi, avec libération du module après chaque arrêt. Un second
essai en fenêtre normale a confirmé la présentation continue des images
WebRTC sur les trois caméras, avec `requestVideoFrameCallback` et progression
du temps de lecture.
Le serveur conserve le flux H.264 High émis par Blink. Quand le navigateur
ne propose pas directement High mais annonce un décodeur **High 4:4:4
Predictive**, la négociation peut sélectionner ce décodeur : cela ne
transforme pas la vidéo en 4:4:4 et n'installe aucun codec. Le serveur conserve
également les identifiants de charge utile RTP négociés dans la plage 35-63
(41 dans cet essai), au lieu de les remplacer par 112. La plage 64-95 reste
exclue pour éviter les conflits avec RTCP, conformément à la
[RFC 5761, section 4](https://www.rfc-editor.org/rfc/rfc5761.html#section-4).
Cette validation concerne ce navigateur et ces caméras, pas tous les niveaux
H.264 : notamment, les sources 1080p annoncent `640028` (High, niveau 4.0),
alors que l'offre de Supermium contient `f4001f` (High 4:4:4 Predictive,
niveau 3.1). Leur décodage a été constaté ici ; une offre limitée au niveau
3.1 ne garantit pas à elle seule la réception d'un flux de niveau 4.0 sur
un autre navigateur ou matériel.
Sur cette même VM, Firefox ESR 115 avec OpenH264 2.6 ne propose que Baseline
en WebRTC : **conserver MSE avec Firefox**, même si le diagnostic natif High
réussit. Une extension ou un pack de codecs système ne remplace pas les
profils annoncés par sa pile WebRTC. Sans aucun H.264 dans l'offre,
l'interface refuse le démarrage avant de réveiller la caméra et indique
de vérifier OpenH264 ou de sélectionner MSE. MSE reste accessible dans les
réglages, y compris avec Supermium.
Le diagnostic `--webrtc` ne contacte aucune caméra, ne lit aucun jeton Blink
et n'envoie aucune notification. Le JSON reste consultable même si le bundle
n'a pas de console : il doit contenir `ok: true`, `frames_decoded: 3` et
`closed: true`. Tester ensuite une caméra réelle dans le navigateur, puis
sélectionner MSE dans les réglages pour vérifier les deux transports.
La notification de bureau repose actuellement sur l'API de toast Windows 10 :
son absence sous Windows 7 n'empêche ni les téléchargements ni les vidéos.
## Limites de sécurité et de maintenance
Windows 7, Python 3.8 et plusieurs dernières dépendances compatibles 3.8 sont
hors maintenance. Cette édition est donc **legacy / best effort**, à ne pas
exposer directement à Internet. La mise à jour automatique est désactivée :
elle installerait sinon l'archive Windows standard fondée sur Python 3.12 et
casserait immédiatement le démarrage sous Windows 7.
Après `login`, le dossier contient des jetons d'accès au compte Blink. Ne pas
publier la VM ni ses fichiers, et revenir au snapshot propre après les essais.