Middle
Πώς υλοποιήθηκε η αποστολή φωνητικών μηνυμάτων στο chat; Πώς λάβατε άδεια πρόσβασης στο μικρόφωνο;
sobes.tech AI
Απάντηση από AI
Για την υλοποίηση αποστολής φωνητικών μηνυμάτων στο chat, συνήθως χρησιμοποιούνται τα API Web Audio και MediaRecorder.
- Λήψη άδειας πρόσβασης στο μικρόφωνο:
Χρησιμοποιείται η μέθοδος navigator.mediaDevices.getUserMedia({ audio: true }), η οποία ζητά από τον χρήστη άδεια για χρήση του μικροφώνου. Αν ο χρήστης δώσει άδεια, επιστρέφεται ένα ρεύμα ήχου.
async function getMicrophoneAccess() {
try {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
return stream;
} catch (err) {
console.error('Η πρόσβαση στο μικρόφωνο απορρίφθηκε', err);
return null;
}
}
- Εγγραφή ήχου:
Με το MediaRecorder μπορεί να καταγραφεί ο ήχος από το ληφθέν ρεύμα. Για παράδειγμα:
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' });
// Αποστολή του audioBlob στον διακομιστή ή αναπαραγωγή
};
mediaRecorder.start();
// Διακοπή της εγγραφής μετά από κάποιο χρόνο
setTimeout(() => mediaRecorder.stop(), 5000);
}
- Αποστολή φωνητικού μηνύματος:
Μετά την εγγραφή του ήχου σε Blob, μπορεί να αποσταλεί στον διακομιστή μέσω fetch ή WebSocket και να αναπαραχθεί στον παραλήπτη.
Τα βασικά βήματα είναι: αίτηση άδειας μέσω getUserMedia, εγγραφή μέσω MediaRecorder και μετάδοση των δεδομένων ήχου.