NodeJS, come si mandano i wav al client ?

di il
22 risposte

NodeJS, come si mandano i wav al client ?

Salve, ho un file wav da mandare in automatico su una pagina html per cui lo metto nell'endpoint get in res.sendFile (come faccio con le immagini) e collego l'endpoint al js del html dopodiché tramite <audio> dovrebbe partire ma non va... come andrebbe fatto?

22 Risposte

  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    Salve, ho un file wav da mandare in automatico su una pagina html per cui lo metto nell'endpoint get in res.sendFile (come faccio con le immagini) e collego l'endpoint al js del html dopodiché tramite <audio> dovrebbe partire ma non va... come andrebbe fatto?
    Purtroppo la mia sfera di cristallo è a fare il tagliando, quindi dovrai riportare il codice se vuoi che venga fatta qualche supposizione.
  • Re: NodeJS, come si mandano i wav al client ?

    Ho trovato si fa con le funzione del framework play-sound

    se puo servire a qualcuno il seguente codice fa suonare il file audio che ci interessa in nodejs
    
    
     player.play('percorso del tuo file')
            
            
  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    se puo servire a qualcuno il seguente codice fa suonare il file audio che ci interessa in nodejs
    Ma a te interessava riprodurre un file sul client (nel browser) o sul server?
    Dal primo messaggio della discussione, pareva la prima, poi adesso sembra la seconda.
  • Re: NodeJS, come si mandano i wav al client ?

    No no al client come da titolo. Uso il percorso dell'endpoint per servire il wav (o qualsiasi altro tipo di file) perché se metto direttamente il percorso del file interessato nel client non lo legge. Utilizzo sempre l'endpoint invece dei percorsi relativi o completi perché cosi lo legge sempre ho visto. L'unica cosa è che quando hai parecchi file statici è brutto avere tanti endpoint nel file app.js infatti se puoi spiegarmi come dividere il file app.js con i suoi endpoint in moduli mi sarebbe utile, grazie.
  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    No no al client come da titolo. Uso il percorso dell'endpoint per servire il wav (o qualsiasi altro tipo di file) perché se metto direttamente il percorso del file interessato nel client non lo legge. Utilizzo sempre l'endpoint invece dei percorsi relativi o completi perché cosi lo legge sempre ho visto. L'unica cosa è che quando hai parecchi file statici è brutto avere tanti endpoint nel file app.js infatti se puoi spiegarmi come dividere il file app.js con i suoi endpoint in moduli mi sarebbe utile, grazie.
    Boh... io spiegherei anche tante cose, soprattutto a me stesso, ma non c'è nemmeno un pezzo di codice per capire, salvo quello che usa questa fantomatica libreria di cui hai riportato due righe, che non ho neanche compreso se vanno scritte sul client o sul server, né come questi endpoint vengano serviti al client, né come vengano letti...
  • Re: NodeJS, come si mandano i wav al client ?

    Quella scritta la si mette nell'endpoint get quindi nel server. Dopodiché si utilizza il percorso dell'endpont dove ci serve che venga chiamata quella funzione della libreria
  • Re: NodeJS, come si mandano i wav al client ?

    Esempio

    sul server
    
    var player = require('play-sound')(opts = {})
    app.get('/a',(req,res)=>{
        player.play('percorso tuo file audio')
    })
    
    
    sul client
    
    document.getElementById('audio').src='/a'
    
  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    Esempio
    sul server [...]
    Non capisco perché ci sia bisogno di una libreria apposta sul server, quando basterebbe semplicemente restituire il file audio da riprodurre con il giusto header Content-Type adeguato al suo formato (ad esempio, audio/mpeg), così come si farebbe con qualsiasi altri file di qualsiasi altro formato, come un documento PDF o un file CSS.

    Infatti, mi risulta che il pacchetto play-sound riproduca il file MP3: lo sentiresti quindi suonare sul server!

    Sono certo che tu sia convinto che funzioni correttamente perché quando richiami la pagina senti il suono: in realtà, non ti accorgi che il suono lo senti perché viene riprodotto dal programma server quando restituisce la pagina a fronte della richiesta, e non dalla pagina del browser.

    Questo vuol dire che, se pubblichi la tua API, ogni volta che un browser farà richiesta delle pagine, sarà il tuo server a suonare e non il browser dell'utente collegato.
  • Re: NodeJS, come si mandano i wav al client ?

    Infatti quando apro l'app dal link di deploy quindi da remoto non si sente l'audio. Puoi spiegarmi in mondo più specifico come devo fare? Grazie
  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    Infatti quando apro l'app dal link di deploy quindi da remoto non si sente l'audio.
    Non solo non si sente l'audio da remoto, ma il file viene riprodotto sul tuo server, quindi se hai una cassa acustica collegata al server, sentirai il suono a ogni download!

    McDuck37 ha scritto:


    Puoi spiegarmi in mondo più specifico come devo fare?
    Basta semplicemente restituire il file audio dal server.

    Vedi questo pezzo codice preso da questa pagina:
    
    var http = require('http'),
        fileSystem = require('fs'),
        path = require('path');
    
    http.createServer(function(request, response) {
        var filePath = path.join(__dirname, 'myfile.mp3');
        var stat = fileSystem.statSync(filePath);
    
        response.writeHead(200, {
            'Content-Type': 'audio/mpeg',
            'Content-Length': stat.size
        });
    
        var readStream = fileSystem.createReadStream(filePath);
        // We replaced all the event handlers with a simple call to readStream.pipe()
        readStream.pipe(response);
    })
    .listen(2000);
    
    L'esempio mostra proprio la restituzione di un file MP3.
  • Re: NodeJS, come si mandano i wav al client ?

    E' possibile riportare anche il codice del client?
  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    E' possibile riportare anche il codice del client?
    Lato client dovrebbe essere sufficiente il tag <audio> che avevi già usato.
    Hai provato?
  • Re: NodeJS, come si mandano i wav al client ?

    Ho provato ad incollare il codice in app.js ma poi non so come metterlo in comunicazione con il tag <audio>

    Inoltre ho visto che mettendo nel tag audio l'url dell' app.get che restituisce il file audio, il problema è risolto cioè il file audio viene riprodotto anche da remoto. Potresti però dirmi in questo caso come faccio, se possibile, a far sparire la barra di controllo ed a riprodurre il file in automatico senza premere play?
  • Re: NodeJS, come si mandano i wav al client ?

    McDuck37 ha scritto:


    Ho provato ad incollare il codice in app.js ma poi non so come metterlo in comunicazione con il tag <audio>
    Il codice non deve essere "messo in comunicazione"... serve a restituire il file audio quando si accede a quell'indirizzo, quindi basta mettere l'URL nell'elemento <audio> di HTML5 per far riprodurre il suono.

    McDuck37 ha scritto:


    Inoltre ho visto che mettendo nel tag audio l'url dell' app.get che restituisce il file audio, il problema è risolto cioè il file audio viene riprodotto anche da remoto.
    Infatti questo è tutto ciò che va fatto.

    McDuck37 ha scritto:


    Potresti però dirmi in questo caso come faccio, se possibile, a far sparire la barra di controllo ed a riprodurre il file in automatico senza premere play?
    In questa pagina trovi gli attributi dell'elemento <audio> tra cui quelli che ti interessano.
Devi accedere o registrarti per scrivere nel forum
22 risposte