【django】简易视频播放功能
前台
{% block content %}<video width="640" height="480" controls><source id="media" src="/video/test.mp4/" type="video/mp4"></video>{% endblock %}
路由
# video/是播放视频的页面
path('video/', video.video),# 这里的<arg_path>作为第二个参数传递到stream_video函数中去,意义就是视频文件的路径名
path('video/<arg_path>/', video.stream_video),
后台
views.py
def video(request):return render(request, 'video/video.html', {})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 = lengthwhile True:bytes_length = chunk_size if remaining is None else min(remaining, chunk_size)data = f.read(bytes_length)if not data:breakif remaining:remaining -= len(data)yield datadef stream_video(request, arg_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)# 这里规定存放视频文件夹path = 'E:\\video\\' + arg_pathprint(path)size = os.path.getsize(path)content_type, encoding = mimetypes.guess_type(path)content_type = content_type or 'application/octet-stream'if range_match:first_byte, last_byte = range_match.groups()first_byte = int(first_byte) if first_byte else 0last_byte = first_byte + 1024 * 1024 * 10if last_byte >= size:last_byte = size - 1length = last_byte - first_byte + 1resp = StreamingHttpResponse(file_iterator(path, offset=first_byte, length=length), status=206,content_type=content_type)resp['Content-Length'] = str(length)resp['Content-Range'] = 'bytes %s-%s/%s' % (first_byte, last_byte, size)else:resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type)resp['Content-Length'] = str(size)resp['Accept-Ranges'] = 'bytes'return resp
【django】简易视频播放功能相关推荐
- 集音频和视频播放功能于一身的简易播放器
<Win32_17>集音频和视频播放功能于一身的简易播放器 搜索源代码
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
最近有个项目牵扯到上传视频,简直把我搞炸了.还么搞定,主要是当初设计有点小出入,心里一直不是坚持,所以,哎,还得努力撒! 下面是当时参考,睡觉,明天搞哎.http://www.cnblogs.com/ ...
- android实现水平进度条_Flutter在线视频播放功能实现(chewie库)
前言: 实现在一个在线视频播放功能,使用第三方库Chewie. 实现步骤: 1.新建一个flutter项目. 2.获取Chewie插件. 3.添加播放视频所需要的权限. 4.调试代码实现你想要的效果. ...
- macbook视频格式转换_AnyMP4简易视频格式转换器 for mac | MAC之家
AnyMP4简易视频格式转换器 for mac 软件简介 销售商:AnyMP4 Studio 价格:免费 语言: 评分:0 分 评论数:0 年龄分级:限4岁以上 免费视频转换器可以转换几乎所有视频文件 ...
- Adobe Premiere Pro CC 2019启动时提示找不到任何具有视频播放功能的模板,请更新视频显示驱动程序并再次启动/PR启动时提示找不到任何具有视频播放功能的模板
Adobe Premiere Pro CC 2019启动时提示找不到任何具有视频播放功能的模板,请更新视频显示驱动程序并再次启动/PR启动时提示找不到任何具有视频播放功能的模板 一.开头 最近刚开学, ...
- uni app 视频播放功能
视频播放功能,需求:编译成纯h5网页,运行在任意容器里,如浏览器.安卓原生和iOS等 媒体组件video 首先使用video组件,然后高度需要自己设置 uni.createVideoContext 官 ...
- 易语言实现视频播放功能
易语言实现视频播放功能 新建工程 导入视频播放支持库 增加视频播放组件 实现选择视频文件功能 添加'按钮'和'通用对话框'组件 打开视频文件 运行程序 新建工程 打开易语言,新建windows窗口程序 ...
- android 音视频播放 SDK,几句代码即可实现音视频播放功能~
项目地址:wanliyang1990/wlmedia 简介:android 音视频播放 SDK,几句代码即可实现音视频播放功能~ 更多:作者 提 Bug 标签: FFmpeg-Android音视 ...
- Springboot项目使用html5的video标签完成视频播放功能
Springboot项目使用html5的video标签完成视频播放功能 1.首先引入pom文件: pom.xml 2.使用video标签来播放视频: 3.视频播放功能的具体实现: 文件的上传与下载会另 ...
最新文章
- PAT (Basic Level) Practise 1040 有几个PAT(DP)
- 不用现有方法,把string转换成int型[C#]
- Binary Search二分法搜索C++程序
- Maven学习总结(10)——使用Maven编译项目gbk的不可映射问题
- 离线安装docker镜像
- 远程连接redis,并设置字符集
- ad9原理图转到orcad capture16.5
- 老毛子 K2 通过SSH 抓包
- 华为eSight网管平台折腾
- 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-20期...
- c#: UrlDecode()
- SpringMVC总结笔记
- 使用TensorFlow搭建智能开发系统,自动生成App UI代码
- C语言 习题3-1 比较大小 (简单解法)
- Eel+VUE python GUI编程
- 如何看损失函数图loss
- python 期货现货差价监测_基差,即期货与现货之间价格之差
- 硬件电路设计(转载)
- 【Unity】环境光探究,在shader中如何计算 : Ambient Color, Sky Color, Equator Color, Ground Color
- 无懈可击的Web设计:使用HTML 5和CSS 3提高网站的灵活性与适应性(第3版)