You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Flask实现类直播式多视频实时流式传输的简易方案问询

简易实现方案推荐

方案1:HLS 静态切片 + 后台自动续播

因为并发量低(≤5),用ffmpeg做轻量切片配合静态文件服务器就能搞定,不用复杂的RTMP服务:

  • 后台跑个常驻进程,按顺序处理视频列表(不用实际渲染,只管编码切片):
    1. 初始化播放列表,记录当前播放的视频索引和进度
    2. 对当前视频用ffmpeg生成HLS切片:ffmpeg -i 当前视频路径 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 -hls_flags delete_segments 输出目录/stream.m3u8
    3. 视频播完自动切列表里的下一个,重复切片操作
  • 前端直接用HTML5的video标签加载m3u8文件:
    <video controls>
      <source src="/static/stream.m3u8" type="application/x-mpegURL">
    </video>
    
  • 优势:前端不用复杂逻辑,靠浏览器原生HLS支持就行;后台实现简单,ffmpeg命令行搞定切片,加个Python脚本就能维护播放列表和自动续播。

方案2:Flask 实时进度同步 + 范围请求流式传输

不想用HLS的话,直接基于Flask的静态文件服务,配合进度同步也能实现准实时播放:

  • 后台部分:
    1. 用Python线程维护全局播放状态:当前播放的视频文件、已播放时长、播放状态
    2. 线程持续更新播放时长(模拟播放就行,不用解码视频,按视频总时长算进度),视频结束自动切下一个
    3. 开个API接口/current-progress,返回当前播放状态(视频文件名、当前进度秒数)
    4. 重写Flask的静态文件路由,支持HTTP范围请求,客户端请求时从指定进度的字节位置开始返视频流
  • 前端部分:
    1. 页面加载先请求/current-progress拿当前进度
    2. 用fetch或XMLHttpRequest请求视频流,设置Range头指定起始字节(提前用ffprobe获取视频字节和时长的对应关系,换算进度对应的字节位置)
    3. 把流喂给video标签,同时每2秒左右请求一次进度接口,调整播放位置避免偏移
  • 优势:完全在Flask生态里,不用额外加第三方流媒体服务;逻辑直观,适配小并发场景。

方案3:本地RTSP转HTTP流(极简版)

要是有现成的视频播放工具,直接用ffmpeg把本地播放的视频转成RTSP流,再转成HTTP流给前端:

  • 后台启动一个进程,用ffmpeg循环播放视频列表并推流:ffmpeg -re -stream_loop -1 -i 视频列表.txt -c copy -f rtsp rtsp://localhost:8554/live
  • 再开个ffmpeg进程把RTSP转成HTTP流:ffmpeg -i rtsp://localhost:8554/live -c copy -f flv http://localhost:5000/live.flv
  • 前端用支持FLV的播放器(比如原生video标签加flv.js)加载流:
    <script src="flv.min.js"></script>
    <video id="videoElement" controls></video>
    <script>
      if (flvjs.isSupported()) {
        var flvPlayer = flvjs.createPlayer({
          type: 'flv',
          url: 'http://localhost:5000/live.flv'
        });
        flvPlayer.attachMediaElement(document.getElementById('videoElement'));
        flvPlayer.load();
        flvPlayer.play();
      }
    </script>
    
  • 优势:不用写复杂的播放逻辑,靠ffmpeg命令行就能完成流的转换和续播,适合快速搭起来用。

内容的提问来源于stack exchange,提问作者George Yu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:30:11