django,播放本地视频,自动截帧返回后台,后台处理后返回前端显示的开发记录

本文介绍了使用Django开发一个网页,功能包括播放本地视频、自动截帧、将截帧图片发送到后台处理、然后将处理结果返回前端显示的全过程。详细讲解了遇到的问题及解决方案,涉及视频播放、HTML5 Canvas截帧、Ajax交互等技术。
摘要由CSDN通过智能技术生成

前言

老师让做个展示网页,功能是:左边放视频,自动对其截帧传到后台,处理完后在传到前端显示.之前的展示网页是一个师弟做的用的django,我没学过前后端,只有从零开始.网上django的资料相对比较少,找了很多博客,最后东拼西凑的勉强完成了任务.感觉有人会碰到同样的问题,斗胆写了这个博客.

注:下面内容仅仅是实现了预期的功能,由于不是本行,代码什么的都很乱,还请见谅.


最终效果:

final.gif
大概就是这个效果,左边播放视频,自动对其截帧传到后台,处理完后再传到前端显示.
(这里好像有点延迟,请无视..)


开发流程:

  1. 网页播放本地视频
  2. 对视频截帧并显示
  3. 截帧返回给后端处理
  4. 处理结果返回前端并显示

前置阅读:

django入门,大佬请忽略:

  1. 菜鸟Django教程(很简洁):
  1. 知乎上的四篇笔记分享(很清晰):

以上是本次工作的准备工作,其他都是直接百度,谷歌.


创建工程:

目录结构:

├── mysite
│   ├── app001
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── migrations
│   │   ├── models.py
│   │   ├── tests.py
│   │   └── views.py
│   ├── db.sqlite3
│   ├── manage.py
│   ├── mysite
│   │   ├── settings.py
│   │   ├── urls.py
│   │   ├── views.py
│   │   └── wsgi.py
│   ├── static
│   │   └── app001
│   │       └── js
│   │           └── jquery-1.11.1.min.js
│   └── templates
│       └── app001
│           ├── index.html

创建工程的基础知识知乎笔记里都有讲,这里就不写了.

修改mysite/setting.py:

添加以下代码(详见上面知乎笔记)(完整setting.py见文章最后):

1. 'app001.apps.App001Config',
2. ALLOWED_HOSTS = ['0.0.0.0']
3. 'DIRS': [os.path.join(BASE_DIR, 'templates/'),], 
4. STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
] 

1. 网页播放本地视频

没有找到支持的视频格式和mime类型

一开始直接添加本地视频的时候,一直出现这个错误.不知道是视频的位置不对,还是其他什么原因.

后来找到了这篇教程:

播放效果:
play.gif

/templates/app001/index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="file" id="file" onchange="onInputFileChange()">
<video id="video_id" controls="controls">您的浏览器不支持 video 标签。</video>
<script>
function onInputFileChange() {
   var file = document.getElementById('file').files[0];
   var url = URL.createObjectURL(file);
   console.log(url);
   document.getElementById("video_id").src = url;
}
</script>
</body>
</html> 

mysite/views.py

from django.shortcuts import render
from django.http import HttpResponse

from django.views.decorators.csrf import csrf_exempt


@csrf_exempt  # 这里表示不加入csrf保护
def index(request):
    return render(request, 'app001/index.html')

mysite/urls.py

from django.conf.urls import url
from django.conf import settings
from django.conf.urls.static import static

from . import views

urlpatterns =[
    url(r'^$', views.index, name='index'),
]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

2. 对视频截帧并显示到网页

也是参考了一个博客.找不到原作者了,随便贴一个:

效果图:(点击capture进行截图)
capture.gif

代码:

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="file" id="file" onchange="onInputFileChange()
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值