[django项目] 如何在网站上实现在线视频功能? 您所在的位置:网站首页 用百度云播放本地视频 [django项目] 如何在网站上实现在线视频功能?

[django项目] 如何在网站上实现在线视频功能?

#[django项目] 如何在网站上实现在线视频功能?| 来源: 网络整理| 查看: 265

在线视频 I. 功能需求分析 1>分析

在线直播,或点播设计到视频的存储,转码,加密,播放很多细节,个人单独开发不现实。本项目的在线课堂选择在线播放视频的形式。实际项目中一般选择云点播或者内嵌视频网站的方式进行。本项目选择是用百度云VOD点播来实现。

2>功能 视频展示页面视频播放详情 II. 模型设计 1>表字段分析 老师表 姓名职称简介头像 课程分类表 名称 课程表 课程名称封面视频地址时长简介大纲老师分类 2>模型定义

在course/models.py中定义如下模型

from django.db import models from utils.models import BaseModel class Teacher(BaseModel): name = models.CharField('讲师姓名', max_length=150, help_text='讲师姓名') title = models.CharField('职称', max_length=150, help_text='职称') profile = models.TextField('简介', help_text='简介') photo = models.URLField('头像url', default='', help_text='头像url') class Meta: db_table = 'tb_teachers' verbose_name = '讲师' verbose_name_plural = verbose_name def __str__(self): return self.name class CourseCategory(BaseModel): name = models.CharField('课程分类名', max_length=100, help_text='课程分类名') class Meta: db_table = 'tb_course_category' verbose_name = '课程分类' verbose_name_plural = verbose_name def __str__(self): return self.name class Course(BaseModel): title = models.CharField('课程名', max_length=150, help_text='课程名') cover_url = models.URLField('封面url', help_text='封面url') video_url = models.URLField('课程视频url', help_text='课程视频url') duration = models.DurationField('课程时长', help_text='课程时长') profile = models.TextField('课程简介', null=True, blank=True, help_text='课程简介') outline = models.TextField('课程大纲', null=True, blank=True, help_text='课程大纲') teacher = models.ForeignKey('Teacher', on_delete=models.SET_NULL, null=True, blank=True) category = models.ForeignKey('CourseCategory', on_delete=models.SET_NULL, null=True, blank=True) class Meta: db_table = 'tb_course' verbose_name = '课程' verbose_name_plural = verbose_name def __str__(self): return self.title

DurationField表示时间间隔

只要创建模板就要生成迁移

III. 百度云VOD音视频点播 1>开通百度VOD音频点播功能

打开网址, 注册登陆, 点击立即购买

[外链图片转存失败(img-8usHVPTZ-1567136321342)()]

如果是首次使用需要填写信息, 然后提交

[外链图片转存失败(img-hmCMjmJ4-1567136321343)(%E5%9C%A8%E7%BA%BF%E8%AF%BE%E5%A0%82.assets/)]

提交后点击此处

[外链图片转存失败(img-K5401xnD-1567136321344)(%E5%9C%A8%E7%BA%BF%E8%AF%BE%E5%A0%82.assets/)]

切换到vod界面

[外链图片转存失败(img-GGKBMmlK-1567136321345)(%E5%9C%A8%E7%BA%BF%E8%AF%BE%E5%A0%82.assets/)]

如果是没有认证则先认证再开通, 首次会送55元包, 这足以供我们使用

[外链图片转存失败(img-8vksJO4r-1567136321345)(在线课堂.assets/)]

2>添加媒资

官方使用说明

[外链图片转存失败(img-3Buw73ad-1567136321346)(在线课堂.assets/1563342650830.png)]

[外链图片转存失败(img-mNkEy4dj-1567136321347)(在线课堂.assets/upload_test_videos_2.jpg)]

[外链图片转存失败(img-XzYxuIz0-1567136321347)(在线课堂.assets/upload_test_videos_3-1563343514038.jpg)]

3>导入测试数据 # 在mysql数据库中添加自己的测试数据 INSERT INTO `tb_teachers` (create_time, update_time, is_delete, name, title,`profile`,photo) VALUES ( '2019-08-28 14:26:05.000000', '2019-08-28 14:26:09.000000', '0', 'jax', '管理员', '本网站的主开发工程师', '/media/jax.jpg'); # 导入课程分类数据 INSERT INTO `tb_course_category` VALUES ('1', '2019-07-17 14:34:33.000000', '2019-07-17 14:34:36.000000', '0', 'python基础'); INSERT INTO `tb_course_category` VALUES ('2', '2019-07-17 14:34:52.000000', '2019-07-17 14:34:55.000000', '0', 'python高级'); INSERT INTO `tb_course_category` VALUES ('3', '2019-07-17 14:35:20.000000', '2019-07-17 14:35:16.000000', '0', 'python框架'); # 导入课程数据 insert into tb_course (title, cover_url, video_url, duration, `profile`, outline, teacher_id, category_id, create_time, update_time, is_delete) values ('你的测试视频1名称', '你的测试视频缩略图URL', '你的测试视频URL', 212000000, '你的测试视频简介', '你的视频大纲', 1, 2, now(), now(), 0), ('你的测试视频2名称', '你的测试视频缩略图URL', '你的测试视频URL', '你的测试视频时长整数表示微秒', '你的测试视频简介', '你的视频大纲', 1, 2, now(), now(), 0); IIII. 视频展示列表 1>接口设计 接口说明: 类目说明请求方法GETurl定义/course/参数格式无参数

返回结果:

文档下载页面

2>后端代码 2.1>视图 # 在course/views.py文件下创建如下视图 from django.shortcuts import render, Http404 from django.views import View from . import models def course_list(request): """ 在线课程列表 url:/course/ """ # 1. 拿到所有视频数据 courses = Course.objects.select_related('teacher').only( 'title', 'cover_url', 'teacher__title', 'teacher__name').filter(is_delete=False) # 用only的原因取到指定的字段, 而不是获取所有字段, 提升性能 # 2. 前端渲染 return render(request, 'course/course.html', context={'courses': courses})

2.2>路由

# 在course/urs.py中定义如下路由 from django.urls import path from . import views app_name = 'course' urlpatterns = [ path('', views.course_list, name='index'), ] 3>前端代码 3.1>html {% extends 'base/base.html' %} {% load static %} {% block title %}在线课程{% endblock %} {% block link %} iMenuIndex = 1 {% endblock %} {% block main %} {% for course in courses %}


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有