2 messages
Impossible de regarder Canal sur PC : la chaîne change sans arrêt
Bonjour,
Mon père a un PC portable avec une carte graphique Nvidia GEForce RTX 5070 et un moniteur externe non GSync. Lorsqu'il essaie de regarder les chaînes de CanalPlus depuis un navigateur, que ce soit Chrome, Edge ou Firefox, ou via l'application Canal les chaînes changent toutes seules. Après avoir testé je constate que le navigateur reçoit en permanence des évènements d'appui de touche virtuelle de passage à la chaîne suivante. Une lecture clavier via les API Windows renvoie la même chose : appui permanent sur la touche de changement de chaîne, et ce uniquement lorsque le player Canal est activé (ie lorsqu'on essaie de regarder une chaîne dans un onglet de navigateur sur le site de Canal).
Ce problème s'est déjà produit il y a quelques mois. Il a été résolu via la désactivation de l'accélération matérielle dans les différents navigateurs.
Aujourd'hui le problème revient, bien que les accélérations matérielles (Hardware Decryption) soient désactivées dans tous les navigateurs. Le fait de forcer l'usage de la carte graphique Intel intégrée ou de la carte NVidia pour Chrome.exe par exemple via le panneau de configuration Windows ne change rien.
Je ne sais plus quoi faire et je trouve que Canal se moque litéralement de ses clients. Il n'y a jamais aucun problème pour les lectures de video d'autres sources. Seule la lecture des videos Canal pose problème.


Said_EquipeCANAL
Compte officiel CANAL+
•
6.4K messages
il y a 11 jours
Bonjour,
Vous avez déjà testé plusieurs navigateurs, désactivé l’accélération matérielle et essayé les deux circuits graphiques du PC. Le fait que les changements de chaîne correspondent à des appuis virtuels répétés, détectés aussi par Windows, est un élément important pour le diagnostic.
À ce stade, nous ne pouvons pas déterminer si la commande provient d’un périphérique, d’un logiciel fonctionnant en arrière-plan ou d’une interaction avec le lecteur CANAL+. Je vous propose deux vérifications ciblées :
Débranchez temporairement le moniteur externe et les accessoires USB éventuels, puis désactivez temporairement les périphériques Bluetooth connectés. Lancez une chaîne sur le seul écran du PC et vérifiez si les appuis virtuels sont toujours détectés.
Si le phénomène persiste, pouvez-vous nous communiquer le code exact de la touche relevé par votre outil, le modèle du PC et la version de Windows ? Précisez également si les appuis cessent immédiatement lorsque vous fermez le lecteur.
Ces résultats permettront de transmettre un signalement technique précis, sans vous demander de refaire les réglages graphiques que vous avez déjà testés.
0
roubachof
2 messages
il y a 10 jours
Bonjour,
Je vous remercie pour votre réponse. Je réaliserai ces tests et vous ferai part des résultats dès que possible (probablement le week-end prochain).
En attendant pour contourner le problème, j'ai écrit et compilé un tout petit utilitaire qui pose un hook sur le clavier et consomme les évènements d'appui et de relâchement de la touche 'piste suivante' (ie code VK_MEDIA_NEXT_TRACK ou 0xB0).
Sources de l'utilitaire ci-dessous :
#include <windows.h>
#include <stdio.h>
HHOOK HKeyboardHook = NULL;
void get_time(WCHAR *lpszw_string)
{
SYSTEMTIME t;
GetLocalTime(&t);
wsprintf(lpszw_string, L"%02d:%02d:%02d.%03d", t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);
}
// Callback de hook clavier
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode == HC_ACTION) {
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam;
WCHAR szw_timestamp[100];
get_time(szw_timestamp);
// On va manger les key down et les key up pour VK_MEDIA_NEXT_TRACK
if (p->vkCode == VK_MEDIA_NEXT_TRACK) {
if(p->flags & 0x80)
wprintf(L"\n[+] %s : touche VK_MEDIA_NEXT_TRACK enfoncee, evenement mange !", szw_timestamp);
else
wprintf(L"\n[+] %s : touche VK_MEDIA_NEXT_TRACK relachee, evenement mange !", szw_timestamp);
// On renvoie une valeur differente de zero pour que l'evenement ne soit pas passe
// aux autres hooks
return 1;
}
else {
if (p->flags & 0x80)
wprintf(L"\n[i] %s : touche 0x%X enfoncee", szw_timestamp, p->vkCode);
else
wprintf(L"\n[i] %s : touche 0x%X relachee", szw_timestamp, p->vkCode);
}
}
// On laisse passer tous les autres evenements
return CallNextHookEx(HKeyboardHook, nCode, wParam, lParam);
}
int main() {
MSG msg;
// On installe un hook clavier global
HKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL, 0);
if (!HKeyboardHook) {
wprintf(L"\n[-] Erreur SetWindowsHookEx 0x%X ", GetLastError());
return 1;
}
wprintf(L"\n[+] Hook clavier pose");
// On met en place une pompe de messages pour que le hook fonctionne
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// On supprime le hook
UnhookWindowsHookEx(HKeyboardHook);
wprintf(L"\n[+] Hook supprime.");
return 0;
}
Une fois lancé, les events sont consommés, le navigateur ne les reçoit plus et tout fonctionne correctement.
(Modifié)
0
0