import re
import os
from wsgiref.util import FileWrapper
from django.http import StreamingHttpResponse
def file_iterator(file_name, chunk_size=8192, offset=0, length=None):
with open(file_name, "rb") as f:
f.seek(offset, os.SEEK_SET)
remaining = length
while True:
bytes_length = chunk_size if remaining is None else min(remaining, chunk_size)
data = f.read(bytes_length)
if not data:
break
if remaining:
remaining -= len(data)
yield data
def stream_video(request, path):
"""将视频文件以流媒体的方式响应"""
range_header = request.META.get('HTTP_RANGE', '').strip()
range_re = re.compile(r'bytes\s*=\s*(\d+)\s*-\s*(\d*)', re.I)
range_match = range_re.match(range_header)
size = os.path.getsize(path)
content_type,
Django 中使用流响应处理视频 streamingHttpResponse
最新推荐文章于 2024-09-22 14:03:39 发布
本文详细介绍了如何在Django中利用streamingHttpResponse实现视频流传输,优化用户体验,减少内存消耗。通过创建生成器函数和设置Content-Type,确保视频能够正确播放。
摘要由CSDN通过智能技术生成