Sobes.tech
Middle

Πώς υλοποιήθηκε η αποστολή φωνητικών μηνυμάτων στο chat; Πώς λάβατε άδεια πρόσβασης στο μικρόφωνο;

sobes.tech AI

Απάντηση από AI

Για την υλοποίηση αποστολής φωνητικών μηνυμάτων στο chat, συνήθως χρησιμοποιούνται τα API Web Audio και MediaRecorder.

  1. Λήψη άδειας πρόσβασης στο μικρόφωνο:

Χρησιμοποιείται η μέθοδος 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;
  }
}
  1. Εγγραφή ήχου:

Με το 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);
}
  1. Αποστολή φωνητικού μηνύματος:

Μετά την εγγραφή του ήχου σε Blob, μπορεί να αποσταλεί στον διακομιστή μέσω fetch ή WebSocket και να αναπαραχθεί στον παραλήπτη.

Τα βασικά βήματα είναι: αίτηση άδειας μέσω getUserMedia, εγγραφή μέσω MediaRecorder και μετάδοση των δεδομένων ήχου.