Python 使用flask播放下载的视频
我有一个简单的烧瓶服务器。我使用pafy从用户提供的youtube链接下载了一段视频Python 使用flask播放下载的视频,python,web,flask,static-files,pafy,Python,Web,Flask,Static Files,Pafy,我有一个简单的烧瓶服务器。我使用pafy从用户提供的youtube链接下载了一段视频 @app.route('/') def download(): return render_template('basic.html') basic.html模板有一个表单,用于提交要下载的操作: <form action="download_vid" method="post"> Link: <input type="text" name="download_path">&l
@app.route('/')
def download():
return render_template('basic.html')
basic.html模板有一个表单,用于提交要下载的操作:
<form action="download_vid" method="post">
Link: <input type="text" name="download_path"><br>
<input type="submit" value="Submit">
</form>
所需的链接确实作为.mp4文件下载到我的静态文件夹中。我可以观看它,如果我在本地打开它,我还可以将它用作HTML文件中标记的源
@app.route('/done')
def done():
return app.send_static_file('test.mp4')
据我所知,“send_static_file”服务于静态目录中的文件。然而,当我运行服务器时,我得到了一个404错误,即使视频明显在那里
我还尝试了done()的不同版本:
在这里,vid.html驻留在模板中,并具有指向static/test.mp4的硬编码路径。下载完成后将加载它。在这种情况下,我没有404错误,但是标签没有做任何事情,它只是灰色的。如果我在本地打开vid.html(双击它),它会工作,它会显示视频
你能帮我理解发生了什么事吗
我想要实现的是:
我认为您的文件路径或文件权限有问题
- 视频是否正在下载到
目录中李>静态
目录是否与您的static
文件位于同一目录中李>main.py
- 您的flask应用程序是否具有读取文件的权限
/done
中将其引用为static/test.mp4
,该url将视频路径转换为/done/static/test.mp4
您可以重定向到实际的媒体文件,而不是尝试使用Flask推送文件
@app.route('/done')
def done():
return redirect('/static/test.mp4')
你好谢谢你的回答。是的,视频正在下载到static。是的,static与main.py(我称之为routes.py)位于同一目录中。是的,有许可证。既然它可以在那里写,我想它也可以读。当然,我使用sudo运行服务器。但仍然没有结果。我还尝试了:app.send_static_file(url_for('static',filename='test.mp4'))我尝试了您建议的方法,但出现了以下错误:找不到服务器上找不到请求的url。如果您手动输入URL,请检查拼写并重试。文件显然在那里。它正在工作。
@app.route('/done')
def done():
return return render_template('vid.html')
@app.route('/done')
def done():
return redirect('/static/test.mp4')