如何将p5.js与Python Flask集成

问题描述 投票:0回答:3

所以我正在尝试运行一个 python Flask 应用程序,它应该呈现一个 html 模板,该模板将记录音频并将其发送到我的 Flask 服务器。我是 p5.js 新手,无法在网页上运行/获取音频输入。我已经尝试过 SO 和 youtube tuts 中提到的几种解决方案,但无法使其工作。

这是我的文件结构和脚本:

---> files
     ---> sketch.js
---> templates
     ---> index.html
---> app.py

index.html:-

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Jarvis</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.min.js"></script>
</head>
<body>
    Hello, This is home page!

    <script type="text/javascript" src="../files/sketch.js"></script>
</body>
</html>

sketch.js :-

var mic;

function setup(){
    mic = new p5.AudioIn();
    mic.start();
}

function draw() {

}

app.py:-

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template('index.html')

if __name__ == "__main__":
    app.run(debug=True)

这是一个简单的例子,我无法让它工作。 当我运行

python app.py
时,一切正常,没有错误,但浏览器不请求麦克风许可,什么也没有发生。

我使用的是 Windows 10 并使用 Firefox 浏览器。 (也尝试过 Google Chrome,同样的问题!)

如果有人可以帮助我或指导我,我将非常感激!

javascript python flask p5.js
3个回答
0
投票

您尝试使用 Flask 只是为了提供一些静态文件。检查另一个问题以了解如何执行您想要执行的操作:如何在 Flask 中提供静态文件


0
投票

我也遇到了同样的问题,但我按照这个教程解决了它。

提供链接不好,所以让我解释一下。您应该将 p5.js 草图保存在静态文件夹中,将 HTML 保存在模板文件夹中。您基本上只需在 HTML 中使用

url_for
运行 javascript 文件即可。在python文件中添加一个渲染HTML的路由和一个使static文件夹中的js文件工作的路由。按照步骤完成后应该可以工作了。


0
投票

虽然您需要使用

url_for...
来引用 Flask 应用程序中的静态文件源是正确的,但我发现还需要做一些其他事情才能使其正常工作。在页面结构中添加一个父 div,您希望 p5 画布在其中呈现,但实际上并不定义画布元素。然后在 p5
setup
函数中,定义一个画布并将父元素分配给它。

在你的 html 模板文件中...

<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
<script src="{{url_for('static', filename='js/yourP5Code.js')}}"></script>
...
<div class="result-view" id="result-view">
    <!-- p5 canvas content renders here  -->
</div>

在你的 p5 js 文件中...

function setup() {
  let canvas = createCanvas(900, 800);
  canvas.parent('result-view');
}
© www.soinside.com 2019 - 2024. All rights reserved.