python - 我的 Flask 应用程序无法在树莓派上正确提供视频,但在我的笔记本电脑上正常

标签 python python-3.x flask raspberry-pi video-streaming

我有用于流媒体电影的 flask 服务器。当服务器在普通计算机(带拱门的笔记本电脑)上运行时,一切正常,但是当树莓派提供视频(使用 flask 的静态文件夹)时,我无法跳过(被迫按顺序观看),所以当我在电影中间关闭浏览器时,我有重新看一遍,这很烦人。 我只使用 <video>标记为 <source>链接到静态.mp4由 flask 提供的文件。

我不知道这是否是由于树莓派无法正确传输全高清视频造成的,但是当我顺序观看时,我没有任何问题。

整个项目都在 GitHub 上,所以如果你想查看代码:

“电影播放器​​”模板是 here

生成“电影播放器​​”html 的代码是 here

感谢您的任何建议。

PS:我有 rapsberry 3 model B,电影存储在 4TB NTFS 硬盘上。

编辑:尝试了 8GB Fat32 USB 内存棒,但仍然存在同样的问题。

请求的最小工作示例:

HTML - video_player_main.html 的一部分

<video controls="controls" autoplay="autoplay" style="margin: auto; display: block;">
    <source src="{{ url_for("static", filename="movies/%s" % filename) }}" type="video/mp4">
    Get better browser!!!
</video>

Flask 生成网站

@video_player.route("/play/<path:movie>")
def play(movie):
    return render_template("video_player_main.html", filename=movie)

带有电影的硬盘安装在./static/movies/

最佳答案

在每种情况下,Flask 服务器为静态电影文件返回什么 MIME 类型?使用 wget 命令(或类似命令)查看返回的内容。

您可能会在不同的系统上获得不同的 MIME 类型,这会导致您的浏览器处理视频流的方式略有不同。请注意,浏览器并不关心文件扩展名;它只关心文件扩展名。它由服务器返回的 MIME 类型决定。

Flask 使用 mimetype Python 库根据文件扩展名确定要使用的 MIME 类型。它使用一堆本地文件来进行猜测,请参阅:https://github.com/python/cpython/blob/2.7/Lib/mimetypes.py#L40

关于python - 我的 Flask 应用程序无法在树莓派上正确提供视频,但在我的笔记本电脑上正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48103261/

相关文章:

python - 将带括号的字符串转换为嵌套列表

python - 如何同步python线程的开始时间?

python - 将 ndarray 保存到文本文件时出现问题

python - 如何在 map(func, iter) 中动态定义 'func' 和 'iter'?

python - 遍历时从字符串列表中删除元素

python - Flask SQLAlchemy 枚举字段默认值

python - python 中的 traits.api 错误

python - 在 python 中使用 Timer 时出错?

python - Flask - 拉取实时流 kafka 数据 - 将 Kafka 与 Python Flask 集成

flask - SQLALchemy-Utils : Use '~' operator with LTree