Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
El evento de finalización de audio en iOS no se activa al transmitir audio desde NodeJS

Estoy usando @google-cloud/text-to-speech para transmitir audio.

Aquí está el código en el backend:

 import { TextToSpeechClient } from '@google-cloud/text-to-speech'; const t2s = new TextToSpeechClient(); app.use('/api/v1/text2speech', async (req, res) => { const text = req.query['text']; const t2s = new TextToSpeechClient(); const request = { input: { text }, audioConfig: { audioEncoding: 2 } }; const [response] = await t2s.synthesizeSpeech(request); res.setHeader('Content-Type', 'audio/mpeg'); res.write(response.audioContent); return res.end(); });

En el navegador:

 <audio src="/api/v1/text2speech?text=Audio to be played"></audio>

Intente hacer algo en el evento de finalización de audio:

 const audio = document.querySelector('audio'); audio.addEventListener('ended', () => { // Nothing happens here on iOS/iPad OS window.alert('Audio has ended'); });

Resultado: Funciona en todos los dispositivos excepto iOS/iPad OS

Notas:

  1. El ended incluso se activa cuando el audio se reproduce desde un archivo estático. Pero necesito transmitir el audio y no reproducirlo desde un archivo.
  2. También probé soluciones alternativas para verificar el estado de audio.paused pero la propiedad audio.paused sigue siendo falsa para siempre, aunque la transmisión se haya completado.
  3. Como se trata de una transmisión, no sé la duración del audio. Entonces no puedo verificar el valor basado en currentTime .
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!