Middle
Como foi implementado o envio de mensagens de voz no chat? Como obtiveram permissão para acessar o microfone?
sobes.tech IA
Resposta da IA
Para implementar o envio de mensagens de voz no chat, geralmente usam-se a API Web Audio e a API MediaRecorder.
- Obter permissão para aceder ao microfone:
Utiliza-se o método navigator.mediaDevices.getUserMedia({ audio: true }), que solicita ao utilizador permissão para usar o microfone. Se o utilizador permitir, é devolvido um fluxo de áudio.
async function getMicrophoneAccess() {
try {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
return stream;
} catch (err) {
console.error('Permissão de microfone negada', err);
return null;
}
}
- Gravar áudio:
Com MediaRecorder, pode-se gravar áudio do fluxo obtido. Por exemplo:
const stream = await getMicrophoneAccess();
if (stream) {
const mediaRecorder = new MediaRecorder(stream);
const chunks = [];
mediaRecorder.ondataavailable = e => chunks.push(e.data);
mediaRecorder.onstop = () => {
const audioBlob = new Blob(chunks, { type: 'audio/webm' });
// Enviar audioBlob para o servidor ou reproduzir
};
mediaRecorder.start();
// Parar a gravação após algum tempo
setTimeout(() => mediaRecorder.stop(), 5000);
}
- Enviar mensagem de voz:
Após gravar o áudio num Blob, pode-se enviá-lo ao servidor via fetch ou WebSocket, e depois reproduzi-lo no destinatário.
Assim, os passos principais são: solicitar permissão através de getUserMedia, gravar com MediaRecorder e transmitir os dados de áudio.