简体   繁体   English

如何将 Javascript 音频 blob 写入 Python 波?

[英]How to write Javascript audio blob to Python wave?

I'm trying to create a Flask endpoint that accepts an audio blob every n seconds and write it to a wave file:我正在尝试创建一个 Flask 端点,该端点每 n 秒接受一个音频 blob 并将其写入波形文件:

Flask: Flask:

@app.route('/api/v01/post/audio-blob/', methods=['POST'])
def api_post_audio_blob():
    blob = request.data
    with open('file.wav', 'ab') as f:
        f.write(blob)
    return Response(status=200)

Javascript: Javascript:

const startButton = document.getElementById("start");
startButton.addEventListener("click", function() {

    /* Get client-side audio stream */
    var constraints = { audio: true }
    var chunks = []
    navigator.mediaDevices.getUserMedia(constraints)
    .then(function(stream) {
        const recorder = new MediaRecorder(stream);
        recorder.ondataavailable = event => {
            chunks.push(event.data);
            var blob = new Blob(chunks, {
                type: "audio/wav"
            });
            var xmlhttp = new XMLHttpRequest();
            var url = "http://127.0.0.1:5000/api/v01/post/audio-blob/";
            xmlhttp.open("POST", url, true);
            xmlhttp.setRequestHeader("Content-type", "audio/wav");
            xmlhttp.send(blob);
        };
        recorder.start(10000);
    })
    .catch(function(err) {
        /* handle the error */
    });

It seems like binary is written to file.wav, but it doesn't play any sound.似乎二进制文件写入了 file.wav,但它不播放任何声音。 Anyone knows how to resolve this?任何人都知道如何解决这个问题? Help would be much appreciated!帮助将不胜感激!

the code above works.上面的代码有效。 Tried another audio player which resolved the 'issue'尝试了另一个解决“问题”的音频播放器

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM