Захват аудиоданных из видеосвязи в React Native
Я разрабатываю приложение для видеосвязи на основе react-native-webrtc. Двухсторонняя связь уже работает корректно, однако возникла задача: отправлять пакеты с аудиоданными на отдельный сервер для анализа. Мне нужно захватить аудиопоток и поместить его данные в буфер.
Реализация в вебе
В веб-среде это можно сделать с помощью MediaRecorder. Пример кода:
const localStream = await navigator.mediaDevices.getUserMedia({
video: {
width: 1280,
height: 720,
frameRate: 30,
},
audio: true,
});
const audioTrack = localStream.getAudioTracks()[0];
this.mediaRecorder = new MediaRecorder(audioTrack);
this.mediaRecorder.ondataavailable = async (event) => {
if (event.data.size > 0) {
const buffer = await event.data.arrayBuffer();
if (this.socket && this.socket.connected) {
this.socket.emit('audio-data', Buffer.from(buffer));
} else {
console.log('WebSocket is not connected. Cannot send audio data.');
}
}
};
this.mediaRecorder.onerror = (error) => {
console.error('MediaRecorder error:', error);
};
this.mediaRecorder.start(1000);Проблема в React Native
В React Native нет встроенного аналога MediaRecorder, поэтому требуется другой подход. Вопрос: как реализовать захват аудиоданных из потока в React Native и отправить их на сервер?