Python 使用flask播放下载的视频

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

我有一个简单的烧瓶服务器。我使用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"><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应用程序是否具有读取文件的权限
    我认为您的文件没有加载到html模板中的原因是,您从url-
    /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')