Компонент голосовых заметок Reactjs с возможностью удаления и переделкиJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Компонент голосовых заметок Reactjs с возможностью удаления и переделки

Сообщение Гость »


Я пытаюсь создать компонент реагирования, который будет обрабатывать записи голосовых заметок. Я пробовал использовать подход vanilla js, но мне нужно удалить конструктор и повторно применить функции изнутри самого компонента.

А еще, как бы мне создать волновую визуализацию — голосовой заметки для воспроизведения, то есть это больше похоже на эту — с возможностью ее удаления и запуска заново.
Изображение


https://codepen.io/winrey/pen/xvxrxR

https://codesandbox.io/s/blissful-haze-gzwthj текущая база кода
import React, { Component } из 'реагировать'; импортировать сетку из @mui/material/Grid; импортировать кнопку из @mui/material/Button; импортировать анализ из «html-react-parser»; импортировать './VoiceNote.scss'; класс VoiceNote расширяет компонент { //https://codepen.io/winrey/pen/xvxrxR оказывать() { /* класс VoiceRecorder { конструктор() { if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { console.log("getUserMedia поддерживается") } еще { console.log("getUserMedia не поддерживается вашим браузером!") } this.mediaRecorder = "" this.stream = "" this.chunks = [] this.isRecording = ложь this.recorderRef = document.querySelector("#recorder") this.playerRef = document.querySelector("#player") this.startRef = document.querySelector("#start") this.stopRef = document.querySelector("#stop") this.startRef.onclick = this.startRecording.bind(this) this.stopRef.onclick = this.stopRecording.bind(this) this.constraints = { аудио: правда, видео: ложь } } handleSuccess (поток) { this.stream = поток this.stream.oninactive = () => { console.log("Трансляция завершена!") }; this.recorderRef.srcObject = this.stream this.mediaRecorder = новый MediaRecorder(this.stream) console.log(this.mediaRecorder) this.mediaRecorder.ondataavailable = this.onMediaRecorderDataAvailable.bind(this) this.mediaRecorder.onstop = this.onMediaRecorderStop.bind(это) this.recorderRef.play() это.mediaRecorder.start() } handleError (ошибка) { console.log("Ошибка navigator.getUserMedia: ", ошибка) } onMediaRecorderDataAvailable(e) { this.chunks.push(e.data) } onMediaRecorderStop (е) { const blob = новый Blob(this.chunks, { 'type': 'audio/ogg; codecs=opus' }) const audioURL = window.URL.createObjectURL(blob) this.playerRef.src = audioURL this.chunks = [] this.stream.getAudioTracks().forEach(track => track.stop()) this.stream = ноль } начать запись() { если (this.isRecording) вернуть this.isRecording = правда this.startRef.innerHTML = 'Запись...' this.playerRef.src = '' navigator.mediaDevices .getUserMedia(this.constraints) .then(this.handleSuccess.bind(this)) .catch(this.handleError.bind(это)) } стопрекординг() { если (!this.isRecording) вернуть this.isRecording = ложь this.startRef.innerHTML = 'Запись' this.recorderRef.pause() это.mediaRecorder.stop() } } window.voiceRecorder = новый VoiceRecorder() */ возвращаться ( Голосовая заметка Рекордер Запись Остановить запись Сохраненная запись ) } } экспортировать VoiceNote по умолчанию;
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»