因为自己不熟悉前后端,所以不太懂,在自己本地flask框架尝试的时候,使用python代码就可以访问网页的麦克风,这其实是因为前后端都是同一个客户端,所以这样子使用是没问题的。
但是一旦上传到服务器,就没办法使用pyaudio来进行访问客户端麦克风进行录音了,这是因为浏览器的安全限制,前端是和客户端交流的,只可以从前端录音再传输给服务器的后端在进行一些操作。
import pyaudio
audio = pyaudio.PyAudio()
stream = audio.open(format=pyaudio.paInt16, channels=1,
rate=16000, input=True, frames_per_buffer=1024)
chunk = stream.read(1024)
这是在python常见的麦克风录音操作,但是在服务器上就只能用js进行录音了。
使用navigator.getUserMedia打开客户端的麦克风:
async startRecording() {
try {
this.stream = await navigator.mediaDevices.getUserMedia(audioConstraints);
this.recorder = new MediaRecorder(this.stream, audioOptions);
this.recorder.ondataavailable = (event) => {
console.log('something')
if (event.data.size > 0) {
console.log('sonmething')
this.audioChunks.push(event.d