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

    AudioContext() - Perdita d'audio al termine dell'utilizzo

    Ho un problema che non riesco a risolvere. Faccio prima una panoramica del progetto che sto portando avanti:

    Sto realizzando una audio/video chat per smartphone

    Utilizzo AudioContext() per gestire il volume del microfono. Il tutto funziona bene ma al termine della chat ho il volume dei suoni di sistema a 0 anche se gli indicatori sono al massimo del volume

    Ora vi mostro come lavoro l'audio:

    Non fate caso a come è scritto il codice. Non è un listato ma mostro solo le parti essenziali


    codice:
    //Prendo lo stream audio video nell'oggetto stream
    navigator.getUserMedia({video: true, audio: true}, function(stream)
    
    // estraggo la traccia video perchè mi servirà dopo
    videoTracks = stream.getVideoTracks();
    
    // genero un connettore audio
    ctx = new AudioContext();
    
    // estraggo lo stream audio
    AudioNativo = ctx.createMediaStreamSource(stream);
    
    // preparo l'oggetto per il nuovo stram audio che tra poco verrà corretto
    AudioCorretto = ctx.createMediaStreamDestination();
    
    // creo il nodo per la gestione dell'audio
    gainNode = ctx.createGain();
    
    // connetto il nodo all'audio nativo
    AudioNativo.connect(gainNode);
    
    // trasferisco la traccia audio in AudioCorretto (l'audio verrà manipolato tra poco)
    gainNode.connect(AudioCorretto);
    
    // aggiungo ad AudioCorretto la traccia video salvata in precedenza
    AudioCorretto.stream.addTrack(videoTracks[0]);
    
    // ------------ inizio controllo volume microfono
    // parto con il volume del microfono a 0
    gainNode.gain.value = 0; // livello volume microfono
    
    // controlo di un bottone, se tenuto premuto alza il volume altrimenti lo azzera e cambia immagine 
    
    // bottone Speaker a pressione accende microfono
    $('#DivSpeaker0').on("touchstart", function(p) {
     p.preventDefault();
     document.getElementById('DivSpeaker0').style.backgroundImage='url(Rilascia.png)';
     gainNode.gain.value = 1;
    });
    
    // bottone Speaker a pressione spegne microfono
    $('#DivSpeaker0').on("touchend", function(p) {
     p.preventDefault();
     document.getElementById('DivSpeaker0').style.backgroundImage='url(Premi.png)';
     gainNode.gain.value = 0;
    }); 
    // ------------ fine controllo volume microfono
    Seguono i comandi per la trasmissione del flusso audio video ... ma non ci interessano per capire l'errore

    Questo funziona perfettamente e la chat ha un flusso perfetto.
    Quando il collegamento si chiude accade questo
    codice:
    // qui i comandi per interrompere lo stream remoto e di seguito:
    gainNode=null;
    stream=null;
    AudioNativo=null;
    AudioCorretto=null;
    ctx.close();
    ctx=null;
    In questo momento le comunicazioni sono terminate ma qualsiasi suono del dispositivo si è ammutolito
    Se avvio una chat tutto torna a funzionare e gli interlocutori comunicano bene.

    Al termine si azzittisce tutto nuovamente. Per far tornare i suoni è sufficiente chiudere l'applicazione.
    Datosi che sarà una APP che deve restare sempre attiva ... il problema è serio!

    Per quel che ho capito, la funzione AudioContext() "ctx = new AudioContext()" , anche se chiusa "ctx.close()", continua ad impegnarmi le risorse audio e mantiene l'audio a 0 che è l'ultima impostazione data.

    Credo che ci sia qualcosa che mi sfugge nell'utilizzo di AudioContext().
    Ultima modifica di SoloWiFi; 26-07-2016 a 17:41
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.