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

Flask后端传视频至React前端,Blob无法作为视频源播放求助

解决Flask视频流前端无法播放的问题

核心问题排查与修复方案

1. 后端未支持HTTP范围请求(Range Requests)

浏览器播放视频依赖断点续传机制,会发送Range请求头获取部分视频内容,默认的send_file不处理该逻辑,导致视频无法正常加载。

修改后端代码,添加范围请求支持:

@app.route('/summarize/<video_name>', methods=['GET'])
def get_video(video_name):
    return send_file(
        f"custom-video/{video_name}",
        mimetype='video/mp4',
        conditional=True,
        accept_ranges=True
    )

2. 前端请求头设置错误

前端无需在请求头中设置Content-Type,应改为Accept头告知服务器接收的视频格式:

const playVideo = async () => {
    axios
      .get(url, {
        headers: {
          "Accept": "video/mp4",
        },
        responseType: "blob",
      })
      .then((response) => {
        const videoURL = URL.createObjectURL(response.data);
        setVideoUrl(videoURL);
        // 组件卸载时释放Blob URL,避免内存泄漏
        return () => URL.revokeObjectURL(videoURL);
      });
  };

3. 前端视频标签配置缺失

确保视频标签绑定正确属性,支持浏览器解析:

<video 
  controls 
  src={videoUrl} 
  type="video/mp4"
  preload="metadata"
></video>

4. 视频文件编码不兼容

确认视频为标准MP4编码(H.264视频 + AAC音频),非标准编码无法被浏览器解析,可通过FFmpeg重新编码:

ffmpeg -i input.mp4 -vcodec h264 -acodec aac output.mp4

验证流程

  • 直接访问后端视频URL(如http://localhost:5000/summarize/test.mp4),确认视频可在浏览器直接播放,排除后端服务问题。
  • 检查浏览器控制台是否存在跨域错误,若前后端域名不同,需在Flask中配置CORS。

内容的提问来源于stack exchange,提问作者moha tech

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:32:45