首页 > 解决方案 > 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

我有几个问题:

  1. 是否有一个我可以使用的 python 库,它为我提供了一种从存储在磁盘上的文件中提供 HLS 流的方法
  2. 即使文件是按照我的提琴手输出发送的,我也看不到浏览器上的视频

标签: pythonpython-3.xflaskhttp-live-streaming

解决方案


您需要额外的 urlhttp://127.0.0.1/videos/<video_directory>/<video_segments>/来提供分段文件。现在您的服务器只提供索引文件。你应该使用hls.js来播放视频片段。hls.js 发送对段文件的请求。


推荐阅读