Python 无法向浏览器提供 mp4

标签 python apache wamp mp4

我尝试从我的家庭 WAMP 服务器(Windows 8)向浏览器提供视频文件,但浏览器不断给出错误 500,并且 apache 日志显示脚本“s.py”中的格式错误的 header :错误 header : G@

“s.py”是我的 python 3.4 版本脚本

n="\\wamp\\www\\r.mp4"
print ("Last-Modified: Fri, 24 Apr 2015 22:09:52 GMT")
print ("Accept-Ranges: bytes")
print ("Content-Length:", os.path.getsize(n))
print ("Content-type: video/mp4\r\n\r\n")

f=open(n, 'rb')
d=f.read()
sys.stdout.buffer.write(d)
sys.stdout.flush()
f.close()

我可以使用浏览器在服务器上运行其他简单的Python脚本,所以我知道这是有效的,但由于某种原因它不会提供这个mp4文件。

在浏览器中,我使用 URL“localhost/s.py”调用它,然后它只会给出错误 500,并且服务器日志显示格式错误的 header 。

我一整天都在研究这个问题,任何人都知道如何解决它,

谢谢

最佳答案

Python 可用于向您的浏览器提供 MP4 服务。但是您不能将 Python 脚本扔到 WAMP 服务器,就像它是 PHP 脚本一样。

如果您打算让 Python Web 应用程序通过 Apache 服务器提供视频服务,则必须构建 WSGI 应用程序并研究 mod_wsgi 以便能够通过 Apache 为 Python 应用程序提供服务。您还可以在没有 Apache 的情况下运行 WSGI 应用程序。

用于从目录提供 mp4 视频的过于简化的 WSGI 应用程序可能是:

import os
from flask import Flask, send_file, make_response


APP = Flask(__name__)
MEDIA_PATH = '/path/to/your/media/directory'


@APP.route('/<vid_name>')
def serve_video(vid_name):
    vid_path = os.path.join(MEDIA_PATH, vid_name)
    resp = make_response(send_file(vid_path, 'video/mp4'))
    resp.headers['Content-Disposition'] = 'inline'
    return resp


if __name__ == '__main__':
    APP.run()
  1. 使用保存视频的目录的完整路径编辑 MEDIA_PATH。

  2. 将此脚本保存为 video_server.py(例如)。

  3. 运行此脚本python video_server.py

  4. 通过浏览器访问 localhost:5000/some_video.mp4(其中 some_vdeo.mp4 是现有视频的名称)

注意:您可以使用关键字参数端口和/或主机编辑 APP.run():

  • 端口:能够监听不同的端口。 APP.run(端口=8000)
  • 主机:监听来自计算机外部的请求。 APP.run(host='0.0.0.0)

编辑:flask是需要安装的外部库。在网站上查找安装说明。简单版本:pip installflask

关于Python 无法向浏览器提供 mp4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621359/

相关文章:

apache - 如何调试 .htaccess RewriteRule 不起作用

linux - 在 linux 服务器中为 apache 分配内存

php - 输入地址时 WordPress 出现 404 Not Found 错误

mysql - Wamp 服务器错误 [本地服务器 - 正在运行的 3 个服务中的 2 个]

python - 如何让按钮先停止播放音频文件,然后播放自己的音频?

python - 如何在 Python 中将二叉树打印为节点结构

javascript - Apache 服务器上的服务器端 Javascript

apache - SSL 证书不存在或为空 - WAMP

python - 如何理解: "the collection of objects directly referenced by an immutable object cannot change"?

python - 多边形周长