Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Converter audio (wav) para um dado binário

Olá coders,

Gostaria de saber como posso converter um arquivo de audio no formato WAV para um arquivo ou texto binário utilizando Javascript.

Algo como:

binaryData = arquivoAudio.ToBinary();
binaryData = convertToBinary(arquivoAudio);

Qualquer ajuda será muito útil!

Abs,

4 respostas

Olá Rafael, tudo bem?

Para ser sincero nunca a cheguei fazer um tipo de conversão parecida com essa antes, mas fazendo algumas pesquisas encontrei algo que acredito que possa ajudar. Encontrei um projeto com licença MIT no github que diz ser capaz de gravar arquivos mp3 diretamente do browser.

https://github.com/Audior/Recordmp3js

http://audior.ec/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/

Espero que essa informação ajude.

Abs

Boa tarde Rafael, olhei esses dois links, porém não é o que eu preciso. Eu precisava converter um arquivo de audio que tem o formato .wav para o seu equivalente texto binário.

Olá Rafael,

Entendi, fiz umas pesquisas adicionais em mais algumas APIs e encontrei o seguinte link que acredito que possa te ajudar:

https://github.com/TooTallNate/node-wav

Abs

solução!

Rafael, boa noite!

Não entendi uma coisa, para qual finalidade você precisa especificamente do formato binário em javascript?

Para reproduzir um áudio, você pode utilizar o blob do arquivo, ou mesmo a matriz Uint8array que é o que mais se aproxima do binário.

Se você precisa enviar o binário para outro sistema, por que não pode enviar o próprio arquivo em um upload?

Ou mesmo fazer o stream dos recursos informados acima, como o blob ou Uint8array?

Para pegar o array buffer, veja a documentação: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array

Para salvar esse array buffer em uma string representando o binário, seguem algumas respostas no stackoverlow:

http://stackoverflow.com/questions/16363419/how-to-get-binary-string-from-arraybuffer

Com certeza esse material irá de ajudar a escrever a função que você precisa, só não entendi a utilidade disso.

Neste outro post, tem uma função simples de como salvar o binário do uint8array, executando o download pelo navegador, sem a necessidade de um servidor:

http://stackoverflow.com/questions/25354313/saving-a-uint8array-to-a-binary-file