Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Galleria fotografica per fotogrammi IPcam - Streaming?

    Salve a tutti,
    è da molto che non scrivevo sul forum.
    Avrei bisogno di una mano, e spero che la sezione sia giusta.

    Premetto che di PHP ci capisco poco e niente (sono un novello).

    Allora, io ho una cartella sul server, dove ogni 2-3 sec. viene salvato un fotogramma (jpg) da una IPcam.

    Io ho la necessità di creare una pagina web che man mano che queste immagini arrivano (FTP) in questa cartella, vengono visualizzate e aggiornate progressivamente con la successiva.

    Quindi io avevo pensato di procedere così:

    1) Prelevo i nomi delle immagini già salvate (magari salvandole in un array) e le inizio a visualizzare per data, una alla volta ad intervalli di 3-4 sec.

    2) Dopo aver visualizzato un immagine, questa viene automaticamente cancellata (per non saturare la cartella, e per evitare rallentamenti inutili)

    Io avrei bisogno di sapere quali "funzioni" usare, poichè come ho detto sopra, di PHP non ci capisco una mazza

    In poche parole, tutto questo marchingegno mi serve per creare una sorta di streaming in tempo "reale", con un fotogramma ogni 3 sec. circa.

    Se avete altre soluzioni più semplici, proponete pure.

    grazie in anticipo a tutti


  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    18
    Provo a buttarla li ragionando insieme a te, se vuoi usare solo php potresti banalmente riaggiornare automaticamente la pagina ogni tot secondi (come ad esempio i fatidici 3) tramite

    <meta http-equiv="refresh" content="3">

    e nella pagina php potresti ricercare l'ultimo file creato in quella cartella con una funzione simile a questa, che ti permette di trovare l'ultimo file salvato in quella cartella

    Codice PHP:
    $ctime 0;
    foreach (
    glob('../up_server/php/files/*.jpg') as $file)
    {
        if (
    $ctime filectime($file))
        {
            
    $match $file;
            
    $ctime filectime($file);
        }

    il file sarà alla fine raggiungibile dalla variabile $match

    allo stesso modo potresti fare una ricerca inversa per capire qual'è il file più vecchio, decidenndo ad esempio ogni quanto eliminarlo, quindi impostando a dovere la variabile $ctime, sapendo che il la funzione filectime lavora sullo Unix timestamp, quindi stessi valori e struttura della variabile della funzione time(); e ovviamente sostituendo al < il > nella verifica.

    poi con la funzione unlink($match) puoi cancellare il file una volta ritenuto troppo vecchio.

    io però per evitare un ricaricamento della pagina volta per volta proverei a pensare di utilizzare una base javascript per far eseguire il codice php lato server.

    spero di averti dato qualche spunto per andare avanti

  3. #3
    Se volessi evitare PHP tu cosa consigli?

    Non ho capito cosa intendi quando dici di usare javascript per far eseguire il codice php lato server? A quanto ne so(poco), a me farebbe comodo il contrario, o no? (anche se credo sia impossibile far girare codice javascript lato server (o no?).

  4. #4
    Comunque ci sono quasi,
    sto procedendo proprio come mi hai consigliato.
    Con il refresh ho già ultimato il tutto, ma dato che non mi sembra la soluzione più elegante, vorrei evitarla.

    Quindi sto prendendo la strada del javascript, ma non riesco ad integrare il codice con il php.

    Posto per farvi capire:

    codice:
    <?php $ctime = 0; 
    foreach (glob('files/*.jpg') as $file) 
     { 
        if ($ctime < filectime($file)) 
    { $match = $file; $ctime = filectime($file); } 
      } 
    ?> 
    <script language="javascript"> 
    var refreshrate=6; //SECONDS BETWEEN REFRESH 
    var image=<?php echo \", $match , \" ?>; //IMAGE NAME 
    var imgheight=141; //IMAGE HEIGHT 
    var imgwidth=357; //IMAGE WIDTH 
    
    function refresh(){ document.images["pic"].src=image+"?"+new Date(); setTimeout('refresh()', refreshrate*1000); } document.write('[img]'+image+'[/img]'); 
    
    if(document.images)window.onload=refresh; 
    </script>

    Il problema è che l'immagine non mi viene proprio caricata, e il browser mi restituisce questo errore:
    codice:
    Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /membri/miosito/prova2.php on line 21
    Ma la linea 21 è codice javascript!

  5. #5
    Il problema è qui: var image=<?php echo \", $match , \" ?>; //IMAGE NAME

    Fai cosi:

    codice:
    var image='<?php echo $match; ?>'; //IMAGE NAME

  6. #6
    Adesso l'immagine non viene visualizzata, può dipendere dal fatto che $match "punta" al percorso del file e non al file direttamente? (nel senso che l'immagine si trova in una cartella, quindi $match restituisce "nomecartella/file.jpg")



    EDIT:
    mi correggo, il codice adesso funziona (carica l'immagine), ma questa non viene aggiornata.
    Consigli?


    Codice PHP:
    <?php $ctime 0
    foreach (
    glob('files/*.jpg') as $file

    if (
    $ctime filectime($file)) 
    $match $file$ctime filectime($file); } 

    ?> 
    <script language="javascript"> 
    var refreshrate=6; //SECONDS BETWEEN REFRESH 
    var image='<?php echo $match?>'; //IMAGE NAME 
    var imgheight=141; //IMAGE HEIGHT 
    var imgwidth=357; //IMAGE WIDTH 
    function refresh(){ document.images["pic"].src=image+"?"+new Date();
    setTimeout('refresh()', refreshrate*1000); } 
    document.write('[img]'+image+'[/img]'); if(document.images)window.onload=refresh; 
    </script>

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    18
    Mi dispiace non riuscire ad aiutarti meglio di così, ma sono all'estero in un albergo con una connessione penosa. e non mi apre nemmeno google, pare carichi solo html.it :P

    Io fossi in te creerei due pagine, una pagina (anche html) dove hai la struttura ch più di piace, e al posto dell'imagine metterei un semplicissimo <div id="fotoBox">

    poi nel javascript gli direi di attendere x secondi e poi aggiungerei questa riga di codice

    codice:
    $('#fotoBox').load("foto.php");
    Ora MI PARE serva jQuery per eseguirla.... io non riesco bene a controllare, ma credo tu debba includere jQuery (scaricabile gratuitamente)

    poi nella pagina foto.php metterei


    Codice PHP:
    <?php $ctime 0
    foreach (
    glob('files/*.jpg') as $file
     { 
        if (
    $ctime filectime($file)) 
    $match $file$ctime filectime($file); } 
      } 
    echo 
    "<img src=\"$match\" height=\"141\" width=\"357\" />
    ?>
    così facendo dovresti poter riaggiornare la pagina all'interno del div senza fare nesssun refresh della pagina.

    Vorrei essere più preciso ma non ricordo due cose e non riesco a navigare abbastanza bene da trovarle e rigirartele, perdonami....

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    18
    spulciando qui è li dovresti provare così, tra gli head della pagina html:

    codice:
    <script type="text/javascript">
    $(document).ready(function() {
         $("#fotoBox).load("foto.php");
    
     setInterval(function() {
        $("#fotoBox").load("foto.php"); }, 6000);
    
    });
    </script>

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    1
    Buongiorno a tutti, non ho trovato la sezione dei saluti e lo faccio qui.... non sò se ho sbagliato.
    Vorrei riaprire questo post, perchè mi trovo nelle stessa condizioni di chi l'ha aperto in origine e non riesco ad uscirne.
    E' stato raggiunto un risultato?
    Avrei bisogno di mettere fotogrammi in un sito amatoriale che ho costruito e riesco assolutamente a far apparire le immagini mandate al server.
    Premetto che il mio sito è stato costruito com Joomla, chi può dare un aiuto lo ringrazio a priori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.