【问题标题】:How to write Javascript audio blob to Python wave?如何将 Javascript 音频 blob 写入 Python wave?
【发布时间】:2021-01-30 16:09:00
【问题描述】:

我正在尝试创建一个 Flask 端点,它每 n 秒接受一个音频 blob 并将其写入波形文件:

烧瓶:

@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:

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 */
    });

似乎二进制文件写入了 file.wav,但它不播放任何声音。任何人都知道如何解决这个问题?非常感谢您的帮助!

【问题讨论】:

  • 不,正在传输数据,文件可播放,声音可用。请记住,只有当记录器停止时,记录才会结束。这可以使您的代码在双方都减少错误。但是你的例子对我有用。
  • 感谢您运行代码。如果它对您有用,则可能是我的麦克风输入设置有问题。还同意明确停止录制将有助于减少错误。今天晚些时候会尝试解决它!
  • 确实有效。我尝试了另一个音频播放器,解决了这个问题。

标签: javascript python flask mediarecorder mediadevices


【解决方案1】:

上面的代码有效。尝试了另一个解决“问题”的音频播放器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-09
    • 2019-10-28
    • 2017-03-12
    • 2016-04-28
    • 1970-01-01
    • 2020-06-14
    • 2019-12-22
    • 2019-09-29
    相关资源
    最近更新 更多