Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

490
Visualizações
Cómo decodificar datos de audio con Web Audio API desde blob enviado desde el servidor websocket de python

Estoy tratando de enviar datos de audio desde un archivo en el sistema del servidor a un cliente web. El servidor ejecuta Flask y tiene Flask-Sock instalado

sin embargo, en el lado del cliente, aparece un error al intentar decodificar los datos entrantes...

 Uncaught (in promise) DOMException: Failed to execute 'decodeAudioData' on 'BaseAudioContext': Unable to decode audio data

Servidor

 import json import time import wave from app import socket from simple_websocket.ws \ import Base as Websocket CHUNK_SIZE = 10 * 1024 @socket.route("/stream") def audio_stream(ws: Websocket): while ws.connected: raw = ws.receive() message = json.loads(raw) wav = wave.open(message["filename"], "rb") sample_rate = wav.getframerate() data = None complete = False while not complete: if wav.tell() >= wav.getnframes(): complete = True print("frame: " + str(wav.tell())) data = wav.readframes(CHUNK_SIZE) ws.send(data) time.sleep(0.8 * CHUNK_SIZE / sample_rate) wav.close() print("finished streaming!")

Cliente

 let context; try{ window.AudioContext = window.AudioContext || window.webkitAudioContext context = new AudioContext() }catch(e) { alert('Web Audio API is not supported in this browser') } function get_stream() { const ws = new WebSocket("ws://localhost:5000/stream") ws.onopen = () => { // initially send information to the server to fetch the audio stream ws.send(JSON.stringify({ filename: "example.wav" })) } ws.onmessage = message => { let blob = message.data let reader = new FileReader() reader.readAsArrayBuffer(blob) reader.onload = async () => { let arrayBuffer = reader.result let audioBuffer = await context.decodeAudioData(arrayBuffer) console.log(audioBuffer) // ??? } } } get_stream()

¿Tengo que codificarlo de alguna manera antes de enviarlo al navegador? ¿Es algo que estoy haciendo mal en el servidor o no estoy decodificando correctamente?

EDITAR 1:

Parece que puedo decodificar los datos y reproducirlos si envío el archivo completo... que no es realmente lo que quiero, ¿hay alguna forma de decodificar datos parciales y agregarlos a un búfer?

about 4 years ago · Santiago Gelvez
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda