django视频上传与播放,django视频教程
本文主要介绍了姜戈实现视频播放的具体示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下溴
视角视图
进口是
导入操作系统
导入集合
从wsgiref.util导入文件包装
从django.http导入StreamingHttpResponse
从django .捷径导入渲染
从django.conf导入设置
def file_iterator(文件名,块大小=8192,偏移量=0,长度=无):
# 每次最多读取8Kb
用打开(文件名, rb )作为f:
f .寻找(偏移量,操作系统.SEEK_SET)
剩余=长度#还有多少未读取
而True:
bytes _ length=chunk_size if remaining not else min(remaining,chunk _ size)
data=f.read(bytes_length)
如果不是数据: #没有数据了退出
破裂
如果剩余:
剩余-=len(数据)
产量数据
极好的流_视频(请求):
将视频文件以流媒体的方式响应
range_header=请求META.get(HTTP_RANGE , ).条状()
范围_ re=re。编译(r bytes s *= s *?PSTARTd )s*-s*?未决d*),回复.我)
范围匹配=范围匹配。匹配(范围_表头)
路径=请求. GET.get(path )
#这里根据实际情况改变,我的views.py在核心文件夹下但是文件夹路径却只到核心的上一层,媒体也在核心文件夹下
视频_路径=os .路径.加入(设置 BASE_DIR,静态,视频)#视频放在目录的静电下的录像文件夹中
文件路径=操作系统。路径。join(视频路径,路径)#路径就是模板?路径=后面的参数的值
大小=OS。路径。getsize(文件路径)#文件总大小
内容类型,编码=mimetypes.guess类型(文件路径)
内容类型=内容类型或"应用程序/八位字节流"
if range_match:
#第一个字节播放到的位置
# 下次播放的位置
第一个字节,最后一个字节=范围匹配。group( START ),range_match.group(END )
first _ byte=int(first _ byte)if first _ byte else 0
# 从播放的位置往后读取10M的数据
最后一个字节=第一个字节1024 * 1024 * 10
if last_byte=size: #如果想读取的位置大于文件大小
last_byte=size - 1 #最后将图片全部读完
长度=最后一个字节-第一个字节1 #此次读取的长度(字节)
resp=StreamingHttpResponse(file _ iterator(file _ path,offset=first_byte,length=length),status=200,content_type=content_type)
resp[内容长度]=字符串(长度)
resp[ Content-Range ]=字节% s-% s/% s %(第一个字节,最后一个字节,大小)
else:
resp=StreamingHttpResponse(文件包装器(open(file _ path, rb )),content_type=content_type)
resp[ Content-Length ]=str(size)
resp[接受范围]=字节
退货责任
前端
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题标题/标题
脚本src= https://cdn。bootcdn。net/Ajax/libs/jquery/3。6 .0/jquery。js /脚本
/头
身体
视频id= media src= width= 720 height= 480 控制自动播放浏览器不支持录像标签/视频
/视频
/body
脚本
$(function () {
$(#media ).attr(src ,/test_resp/?path=/media/video。MP4’);
})
/脚本
/html
到此这篇关于姜戈实现视频播放的具体示例的文章就介绍到这了,更多相关姜戈视频播放内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。