python - Python 中的 HLS Live Stream API 从磁盘提供文件
问题描述
我有一个捕捉视频的相机,然后我使用 FFMPEG 来分割这些视频以进行 HTTP 实时流传输并生成一个 m3u8 文件及其相应的 ts 文件
我在本地文件夹中创建了所有 *.ts 文件和 *.m3u8 文件,我想使用 API 将这些文件提供给客户端
我在 Python 中创建了一个 Flask 应用程序
烧瓶 API。
@app.route('/videos/<file_name>')
def live_stream(file_name):
return send_from_directory("D:\\public", file_name)
HTML 代码
<html>
<body>
<video width="400" controls>
<source src="http://127.0.0.1:5000/videos/toystory.m3u8" type="video/mp4">
</video>
</body>
</html>
示例 m3u8 文件。如您所见,没有 End 标签,因为我不断将新的 ts 文件附加到此 m3u8 文件以支持实时流式传输
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:64
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:64.397667,
toystory0.ts
我有几个问题:
- 是否有一个我可以使用的 python 库,它为我提供了一种从存储在磁盘上的文件中提供 HLS 流的方法
- 即使文件是按照我的提琴手输出发送的,我也看不到浏览器上的视频
解决方案
您需要额外的 urlhttp://127.0.0.1/videos/<video_directory>/<video_segments>/
来提供分段文件。现在您的服务器只提供索引文件。你应该使用hls.js来播放视频片段。hls.js 发送对段文件的请求。
推荐阅读
- flutter - Flutter 仅在调试模式下导入库
- c - C语言反向文件读取的意外输出
- nuxt.js - 过滤组件中获取的数据
- python - Pygame 子弹运动
- javascript - 获取帖子请求不起作用javascript express
- python - 即使我点击浏览器或其他程序,我也希望我的工具保持显示在桌面上
- f# - 在 blazor 中引用 af# fsharp 库
- javascript - chrome manifest v3 上的基本代理身份验证
- c - 给定一手 7 张牌,找出所有 5 张顺子 (C)
- mikrotik - mikrotik 在用户创建期间发送 ret 后接下来要做什么