cari

Rumah  >  Soal Jawab  >  teks badan

MediaStream dalam Safari gagal mengeluarkan sumber dengan betul

<p>Saya menggunakan kaedah AudioWorkletNode untuk merakam dan semua penyemak imbas nampaknya sedang merakam dengan baik. </p> <p>Apabila saya merakam, ikon rakaman muncul pada tab dan hilang apabila rakaman tamat. </p> <p> Walau bagaimanapun, dalam Safari, ikon pembesar suara kecil (biasanya menunjukkan bahawa tab mengeluarkan bunyi) akan muncul pada tab dan bukannya ikon mikrofon. </p> <p>Jadi saya rasa saya mungkin tidak menutup sesuatu. </p> <p>Selepas rakaman selesai saya akan melakukan perkara berikut:</p> <pre class="brush:php;toolbar:false;">// strim ialah jenis MediaStream jika(strim) stream.getTracks().forEach(track => track.stop()); strim = null</pra> <p>Strim dibuat melalui: </p> <pre class="brush:php;toolbar:false;">stream = tunggu navigator.mediaDevices.getUserMedia({ audio: pilihan });</pre> <p>Adakah terdapat apa-apa lagi yang diperlukan untuk mengeluarkan semua sumber? </p>
P粉106715703P粉106715703536 hari yang lalu571

membalas semua(1)saya akan balas

  • P粉536909186

    P粉5369091862023-08-31 10:10:19

    Untuk mematikan semuanya, kaedah di bawah nampaknya berkesan. Saya baru sahaja menemui ini melalui percubaan dan kesilapan kerana saya tidak dapat mengetahui cara untuk mendapatkan Safari memberitahu saya perkara yang masih ada:

    // stream : MediaStream
    // sourceNode : MediaStreamAudioSourceNode
    // recorderNode : AudioWorkletNode
    
    const tracks = stream.getTracks();
    tracks.forEach((track) => {
      track.stop();
      stream.removeTrack(track)
    });
    stream = null
    
    sourceNode.disconnect();
    sourceNode = undefined
    
    recorderNode.disconnect();
    recorderNode = undefined

    balas
    0
  • Batalbalas