Blob 데이터 유형으로 웹 앱 데이터베이스에 오디오 녹음 게시
2214 단어 javascriptaudioreact
const [trackOne, setTrackOne] = useState(
{
isRecording: false,
blobURL: '',
isBlocked: false,
})
// one time check for mic permissions
useEffect(() => {
navigator.getUserMedia({ audio: true },
() => {
console.log('Permission Granted');
setTrackOne({ isBlocked: false });
},
() => {
console.log('Permission Denied');
setTrackOne({ isBlocked: true })
},
);
}, [])
권한이 부여되면 녹음을 시작하는 함수를 호출할 수 있습니다.
const startOne = (e) => {
if (trackOne.isBlocked) {
console.log('Permission Denied');
} else {
Mp3Recorder
.start()
.then(() => {
setTrackOne({ isRecording: true });
}).catch((e) => console.error(e));
}
};
녹음을 중지하려면 녹음을 중지하는 함수를 호출해야 합니다.
const stopOne = () => {
Mp3Recorder
.stop()
.getMp3()
.then(([buffer, blob]) => {
const file = new File(buffer, 'track-one.mp3', {
type: audioType
})
setAudioData(file)
const blobURL = URL.createObjectURL(blob)
setTrackOne({ blobURL, isRecording: false })
})
}
그런 다음 useEffect를 사용하여 중지 버튼을 클릭할 때마다 데이터를 게시할 수 있습니다.
const formData = new FormData()
formData.append('audio_data', audioData)
useEffect(()=>{
fetch('/tracks', {
method: 'POST',
body: formData,
})
.then((r) => {
if (r.ok) {
fetch('/tracks')
.then(r => r.json())
.then(data => setAllTracks(data))
}
})
}, [audioData])
마지막에 포함된 가져오기 GET 요청은 새 트랙을 즉시 렌더링하는 것입니다.
관련된 라이브러리:
'mic-recorder-to-mp3'에서 MicRecorder 가져오기;
중요한
오디오 녹음 구성요소에서 비트 전송률을 설정해야 합니다.
const Mp3Recorder = new MicRecorder({ bitRate: 128 });
Reference
이 문제에 관하여(Blob 데이터 유형으로 웹 앱 데이터베이스에 오디오 녹음 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/waylandi/posting-audio-recordings-to-your-web-app-database-as-blob-datatypes-30kb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)