Récupérer capture de flux

Fermé
crepijules Messages postés 72 Date d'inscription dimanche 23 juillet 2017 Statut Membre Dernière intervention 15 juin 2022 - 7 mars 2022 à 19:59
crepijules Messages postés 72 Date d'inscription dimanche 23 juillet 2017 Statut Membre Dernière intervention 15 juin 2022 - 11 mars 2022 à 07:50
Bonjour,

Voici mon problème pour faire simple : j'ai de nombreuses caméras qui mettent à disposition un flux accessible avec une url du type http://example.com/cam035/stream.cgi

Or j'aimerais en faire une capture à l'aide de php (si possible en .jpeg mais pas obligatoire)

Merci d'avance pour votre aide ;)

3 réponses

jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
7 mars 2022 à 20:24
Bonjour,

Jamais testé .. mais une petite recherche sur le net permet de trouver des trucs du genre
https://github.com/stephen-webmad/mjpeg-restream/blob/master/stream.php


0
crepijules Messages postés 72 Date d'inscription dimanche 23 juillet 2017 Statut Membre Dernière intervention 15 juin 2022 6
7 mars 2022 à 21:56
Merci beaucoup !
En fait, il me manquait les mots clés pour la recherche, car avec ".cgi to .jpeg in php", je ne trouvais pas grand chose, mais en fait il faut prendre le .cgi comme flux de type mjpeg (je ne suis pas sûr de ce que je dis, mais avec des recherches sur mjpeg il y a beaucoup plus de résultats, et des scripts qui correspondraient à ce que je souhaite faire)

J'ai essayé le script, par contre il est assez ancien, j'ai essayé de l'adapter à mon cas mais il n'a pas l'air de vraiment fonctionner...

Par contre, j'ai pu trouver des parties de code, et adapter quelque chose avec des parties venant d'internet, mais j'obtiens une page vide (alors que je devrais avoir une erreur si il y a un problème) :

<?
set_time_limit(0);
$fp = fsockopen ("example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET /cam035/stream.cgi HTTP/1.0\r\n\r\n");
    while ($str = trim(fgets($fp, 4096)))
       header($str);
    fpassthru($fp);
    fclose($fp);
}
?>


Problème dans la requête peut être ?

Merci d'avance !
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
7 mars 2022 à 22:22
Ta balise d'ouverture de PHP n'est pas bonne...
<? ... A remplacer par. <?php

Et pour les messages d'erreur, tout dépend comment est paramétrer ton serveur.
Regarde ici
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
crepijules Messages postés 72 Date d'inscription dimanche 23 juillet 2017 Statut Membre Dernière intervention 15 juin 2022 6 > jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024
7 mars 2022 à 23:24
Je viens de changer la balise d'ouverture du code php, en effet je n'avais pas fait attention quand j'avais trouvé le code, mais cela n'a pas l'air de changer grand chose...

J'ai aussi paramétré le serveur pour qu'il affiche toutes les erreurs, mais toujours rien : une page blanche.

Un test était de fournir une url fausse, et là j'obtiens bien une erreur me disant que le flux n'existe pas (ou connexion refusée en fonction du test) ce qui est normal comme il n'y a aucun flux à cette url.

Par contre, après avoir rétabli l'url normale (qui fonctionne sur un navigateur), je n'ai toujours rien, pourtant le code est censé me renvoyer une erreur à la ligne 5, ou dois-je ajouter encore d'autres renvois d'erreur pour être bien sur qu'il n'y ait pas d'autre problème sans renvoyer d'erreur ?

Merci encore et bonne soirée ;)
0
crepijules Messages postés 72 Date d'inscription dimanche 23 juillet 2017 Statut Membre Dernière intervention 15 juin 2022 6
11 mars 2022 à 07:50
Bonjour,
Je crois que j'ai trouvé une piste, sur certains forums il est question d'utilisation de la bibliothèque GD pour Php, par contre je ne vois pas trop quelle fonction serait la plus utile et celle qui aurait besoin du minimum de code autour pour simplement capturer une image depuis un flux, une idée peut-être ?
Bonne journée
0