所以我正在尝试运行一个 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,同样的问题!)
如果有人可以帮助我或指导我,我将非常感激!
您尝试使用 Flask 只是为了提供一些静态文件。检查另一个问题以了解如何执行您想要执行的操作:如何在 Flask 中提供静态文件
我也遇到了同样的问题,但我按照这个教程解决了它。
提供链接不好,所以让我解释一下。您应该将 p5.js 草图保存在静态文件夹中,将 HTML 保存在模板文件夹中。您基本上只需在 HTML 中使用
url_for
运行 javascript 文件即可。在python文件中添加一个渲染HTML的路由和一个使static文件夹中的js文件工作的路由。按照步骤完成后应该可以工作了。
虽然您需要使用
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');
}