ASP.NET视频点播系统的设计与实现

news2025/1/15 13:02:29

  

本文阐述了基于WEB的交互式视频点播系统的协议原理、软件结构和设计实现。本视频点播系统根据流媒体传输原理,在校园局域网的基础上模拟基于Web的视频点播系统,实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个小型系统,我们采用基本的SQL Server数据库。具体实现中将HTML、ASP.net及C#相结合,力求界面美观、操作流畅。本文主要论述服务器端视频服务平台的搭建、流媒体的相关原理及管理功能的具体实现。

关键词:流媒体;ASP.net;视频点播

2.3  系统的开发工具

2.3.1  开发环境
  • Microsoft Visual Studio 2005 介绍

Visual Studio是微软公司出品的一款大型应用软件,是一套完整的开发工具集,它主要用于生成ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。

  • Microsoft SQL Server 2000介绍

Microsoft SQL Server 2000是目前使用最广泛的数据库之一。

2.3.2  .NET介绍

对于.NET,Microsoft公司自己也没有一个详细确切的定义。但是我们可以这样认为:.NET是Microsoft公司提供的一系列产品的总称。具体来说,.NET由下面几个部分组成:.NET Framework、.NET企业服务器和.NET开发工具。

.NET Framework是一个高性能的程序运行环境,它提供了具体的服务和技术,支持统一的类库,方便开发人员建立相应的应用程序。

.NET企业服务器是指SQL Server 2000之类的由.NET Framework应用程序使用的服务器端产品。

2.3.3  C#介绍

C# 编程语言 C# 是一种新的编程语言,它从 C 和 C++ 演变而来,是一种简单、现代、类型安全和面向对象的语言。C# 是为在 .NET 平台上生成企业级应用程序而设计的。用 C# 编写的代码被编译为访问 CLR 服务的托管代码。Visual Studio 环境和向导完全支持 C#。C# 编程所用的类库是 Framework。

4.1  系统实现的关键技术

4.1.1  数据库的连接

本系统与数据库的连接都封装到数据库连接类里面,使用时调用类的对象就可完成建立连接、执行一种操作、关闭连接。

数据库连接类的代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

public class connClass

{

    public string que;

    public connClass()    {   }

    public static bool rd(string que)//对数据库执行查询,返回查询是否成功

    {

        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=movie;User ID=sa;Persist Security Info=True"); //建立数据库连接

        conn.Open();//打开数据库连接

        SqlCommand cmd = new SqlCommand(que, conn);

        SqlDataReader sqlrd = cmd.ExecuteReader();//执行sql语句

        return sqlrd.Read();//返回执行结果

        sqlrd.Close();

        conn.Close();//关闭数据库连接

    }

    public static bool Execute(string que)//对数据库执行一次操作,返回操作是否成功

    {

 SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=movie;User ID=sa;Persist Security Info=True");

        conn.Open();

        SqlCommand cmd = new SqlCommand(que, conn);

        int count =Convert.ToInt32(cmd.ExecuteNonQuery());

        if (count > 0) return true;

        else return false;

        conn.Close();

    }

    public static DataTable ds(string que)//从数据库中获得数据储存到内存中

    {

        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=movie;User ID=sa;Persist Security Info=True");

        conn.Open();

        SqlDataAdapter adap = new SqlDataAdapter(que,conn);

        DataSet ds = new DataSet();

        adap.Fill(ds,"table");

        return ds.Tables["table"];

        conn.Close();

    }

    public static SqlDataReader read(string que)//执行一次数据库查询返回查询结果

    {

        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=movie;User ID=sa;Persist Security Info=True");

        conn.Open();

        SqlCommand cmd = new SqlCommand(que, conn);

        SqlDataReader sqlrd = cmd.ExecuteReader();

        sqlrd.Read();

        return sqlrd;

        sqlrd.Close();

        conn.Close();

    }

}

4.1.2  嵌入试视频播放

本系统通过ActiveX控件方式在Web页面中嵌入播放对象,并通过DHTML为内嵌对象动态指定视频流URL,从而为视频播放提供了一个统一的友好界面。用户点播视频时,系统根据视频文件的格式选择合适的播放页面。

嵌入式视频播放代码如下:

RM视频格式代码,如下:

<object id="player" align=middle name="player" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="800" height="600" >

<param name=_ExtentX value=11986>

<param name=_ExtentY value=8123>

<param name=AUTOSTART value=-1>

<param name=SHUFFLE value=0>

<param name=PREFETCH value=0>

 <param name=NOLABELS value=0>

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

<param name=CONTROLS value=ImageWindow>

<param name=CONSOLE value=Clip1>

<param name=LOOP value=0>");

<param name=NUMLOOP value=0>

<param name=CENTER value=1>;

<param name=MAINTAINASPECT value=1>

<param name=BACKGROUNDCOLOR value=#000000>

 </object>

<object ID="RP2" height=58 width=800 align=middle  CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">

<param name="_ExtentX" value="12409">

<param name="_ExtentY" value="1535">

<param name="AUTOSTART" value="-1">

<param name="SHUFFLE" value="0">

<param name="PREFETCH" value="0">

<param name="NOLABELS" value="0">

<param name="CONTROLS" value="ControlPanel,StatusBar">

<param name="CONSOLE" value="Clip1">

<param name="LOOP" value="0">

<param name="NUMLOOP" value="0">

<param name="CENTER" value="0">

<param name="MAINTAINASPECT" value="0">

<param name="BACKGROUNDCOLOR" value="#000000">

<embed type="audio/x-pn-realaudio-plugin" CONSOLE="Clip1" CONTROLS="ControlPanel,StatusBar" AUTOSTART="true">

</object>

4.2  视频点播系统的部分功能的设计与实现

4.2.1  用户登陆功能的实现
  • 用户登陆流程:根据用户输入的用户名从数据库中读取数据,如果数据库中没有该用户名就报错,如果有该用户的信息就把密码从数据库中读取出来,然后和用户输入的密码进行比较,如果密码正确就登陆成功。如果密码不正确就提示出错。
  • 用户登陆流程图,如图5:

图5:用户登陆流程图

  • 用户登陆功能关键代码如下:

protected void Button1_Click(object sender, EventArgs e)    //点击登陆按钮执行以下代码

    {

string name = uid.Text.Trim();       //将用户输入的用户名赋给变量name

string password = pwd.Text.Trim();     //将用户输入的密码赋给变量password

if (!connClass.rd("select vusername from tableuser where vusername='" + name + "'"))

   //判断用户输入的用户名是否存在

HttpContext.Current.Response.Write("<script>alert('用户名不正确!'); history.back(); </script>"); 

else

 {

    SqlDataReader rd = connClass.read("select vpassword,cquanxian from tableuser where vusername='" + name + "'");

    if (rd.GetString(0).Trim() != password)//判断用户输入的密码是否正确

    HttpContext.Current.Response.Write("<script>alert('密码不正确!'); history.back(); </script>");

 else

{Session["username"] = name;//把用户名赋给该用户的Session["username"]对象

Session["rigth"] = rd.GetString(1).Trim();

//把从数据库读取的用户权限赋给Session["rigth"]

  Response.Redirect("index.aspx");  //跳转到首页

            }

}

}

​​​​​​​4.2.2  用户注册功能的实现
  • 用户注册流程介绍:用户填写用户注册页面的表格,然后点击注册按钮,系统验证用户输入的注册信息是否合法,如果合法就把用户输入的注册信息保存到系统的数据库中。如果注册信息不合法就提示出错。
  • 用户注册流程图,如图6:

图6:用户注册流程图

  • 用户注册关键代码如下:

protected void regsiterB_Click(object sender, ImageClickEventArgs e)

//用户点击注册按钮执行以下代码

{

 if (connClass.rd("select vusername from tableuser where vusername='" + username.Text.Trim() + "'")) { username.Text = "用户名已存在!"; }    //判断用户名是否已经被使用

  else

    {

if (connClass.rd("select vEmail from tableuser where vEmail='" + email.Text.Trim() + "'")) { email.Text = "Email已被使用!"; }//判断Email是否已经被使用

   else

   {

    int i;

SqlDataReader read = connClass.read("select MAX(iUserID) from tableuser");

//从数据库中读取最大的用户ID的值

i = Convert.ToInt32(read.GetValue(0)) + 1;

//新注册用户的ID等于最大的用户ID的值加1

connClass.Execute("insert into tableuser values ('" + i + "','" + username.Text.Trim() + "','" + password1.Text.Trim() + "','" + email.Text.Trim() + "','" + question.Text.Trim() + "','" + answer.Text.Trim()+ "','1')");

//添加新用户信息到数据库

      Session["username"] = username.Text.Trim();

      Session["rigth"] = "1";

      HttpContext.Current.Response.Write("<script>alert('注册成功,即将转到首页!');window.location.href='index.aspx'  </script>");

//注册成功弹出对话框

            }

        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1641234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang学习笔记(内存逃逸分析)

golang的内存逃逸 逃逸分析&#xff08; Escape analysis&#xff09; 是指由编译器决定内存分配的位置&#xff0c; 不需要程序员指定。 函数中申请一个新的对象。 如果分配在栈中&#xff0c; 则函数执行结束可自动将内存回收&#xff1b;如果分配在堆中&#xff0c; 则函数…

微服务总览

微服务保护 微服务总览 微服务总览 接入层&#xff1a;反向代理功能&#xff0c;可以将用户域名访问的地址以负载均衡的方式代理到网关地址&#xff0c;并且并发能力非常高&#xff0c;并且会采用主备nginx的方式防止nginx寄了&#xff0c;备份nginx监控主nginx状态&#xff0c…

展开说说:Android Fragment完全解析-卷三

本文章分析了Fragment的管理器FragmentManager、事务FragmentTransaction 、以及完整的声明周期和动态加载Fragment的原理解析。 1、Fragment管理器 FragmentManager 类负责在应用的 fragment 上执行一些操作&#xff0c;如添加、移除或替换操作&#xff0c;以及将操作添加到…

搭建MongoDB分片集群

文章目录 一、什么是分片二、分片集群1、组件构成2、分片集群内各组件间交互 三、数据如何切分四、分片策略1、哈希分片2、范围分片 五、分片集群架构六、搭建分片集群1、涉及主机2、所有主机安装MongoDB3、分片节点副本集的创建3.1、第一套副本集shard13.1.1、准备存放数据和日…

python项目==一个web项目,配置模板指定文件清洗规则,调用模板规则清洗文件

代码地址 一个小工具。 一个web项目&#xff0c;配置模板指定文件清洗规则&#xff0c;调用模板规则清洗文件 https://github.com/hebian1994/csv-transfer-all 技术栈&#xff1a; SQLite python flask vue3 elementplus 功能介绍&#xff1a; A WEB tool for cleaning…

Pyside6详细使用教程python之GUI开发

1、首先需要安装Pyside6&#xff0c;终端执行命令&#xff1a; pip3.10 install pyside6 2、你们的一般是 pip install pyside6 2、如下代码创建一个简易程序导入必要的模块 import sys from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton,…

three.js入门指南

WebGL和Three.js的概念 什么是WebGL WebGL是基于OpenGL ES 2.0的Web标准&#xff0c;可以通过HTML5 Canvas元素作为DOM接口访问。 也就是WebGL是作为OpenGL的网页端入口。它作为一个底层标准&#xff0c;然后我们可以通过JavaScript代码&#xff0c;在网页上实现三维图形的渲…

重看Spring聚焦BeanDefinition分析和构造

目录 一、对BeanDefinition的理解 &#xff08;一&#xff09;理解元信息 &#xff08;二&#xff09;BeanDefinition理解分析 二、BeanDefinition的结构设计分析 &#xff08;一&#xff09;整体结构体会 &#xff08;二&#xff09;重要接口和类分析 三、构造 BeanDef…

JavaSE——正则表达式(1/2):概述、初步使用(普通方法,正则表达式)、书写规则(字符类,预定义字符,数量词,其他,特殊案例)

目录 概述 初步使用 普通方法 正则表达式 书写规则 字符类 预定义字符 数量词 其他 特殊案例 概述 正则表达式 就是由一些特定的字符组成&#xff0c;代表的是一个规则。 作用一&#xff1a;用来校验数据格式是否合法 &#xff08;更简单、更便捷&#xff09; 作…

C语言 | Leetcode C语言题解之第66题加一

题目&#xff1a; 题解&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ int* plusOne(int* digits, int digitsSize, int* returnSize){for(int i digitsSize - 1; i > 0; --i){digits[i] digits[i] 1;//最后元素1判断是不…

SQL注入漏洞扫描---sqlmap

what SQLMap是一款先进的自动执行SQL注入的审计工具。当给定一个URL时&#xff0c;SQLMap会执行以下操作&#xff1a; 判断可注入的参数。判断可以用哪种SQL注入技术来注入。识别出目标使用哪种数据库。根据用户的选择&#xff0c;读取哪些数据库中的数据。 更详细语法请参考…

NIO和NIO.2对比

Java NIO (New Input/Output) 是从Java 1.4版本开始引入的一个新的I/O API&#xff0c;用于替代原来的BIO&#xff08;Blocking I/O&#xff09;API。NIO提供了更加灵活和高效的网络通信方式&#xff0c;特别适合于高吞吐量的网络编程。NIO的主要特点是非阻塞模式&#xff0c;它…

Spark Stream

一、Spark Streaming是什么 Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多&#xff0c;例如&#xff1a;Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如&#xff1a;map、reduce、join、wind…

linux 服务器利用阿里网盘API实现文件的上传和下载

文章目录 背景脚本初始化 阿里云盘API工具 aligo安装aligoaligo教程实战parse.py 演示上传文件上传文件夹下载文件下载文件夹 背景 最近在用ubuntu系统做实验&#xff0c;而ubuntu 系统的文件上传和下载操作很麻烦&#xff1b; 于是便打算使用阿里网盘的API 进行文件下载与上传…

深度学习每周学习总结P7(咖啡豆识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 数据链接 提取码&#xff1a;7zt2 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入及处理部分…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-10.1-NXP SDK 移植

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

IDEA 多模块项目报错 Cannot Save Settings 问题

IDEA 多模块项目报错 Cannot Save Settings 问题 Cannot Save Settings&#xff1a; Module "spring_cloud_sentinel_demo" must not contain source root "D:\java_test\Intesij_idea\spring_cloud_sentinel_demo\order_service_rest\src\main\resources"…

一键去除衣物DeepNode合成软件下载

dn软件Windows版下载地址&#xff1a;点击下载 ai一键去除衣物(DeepNode)是一款非常好用的一键换装软件&#xff0c;它可以创造出不同的图像效果&#xff0c;还可以对人的面部特征进行微调&#xff0c;使用户的图片更有特色。软件中还有许多模板可以随意使用以供参考&#xff0…

高效时间序列分析的开源利器:QuestDB

QuestDB&#xff1a;探索数据的深度&#xff0c;加速决策的速度- 精选真开源&#xff0c;释放新价值。 概览 时序数据库&#xff08;Time Series Database&#xff0c;简称TSDB&#xff09;是一种专门设计和优化的数据库系统&#xff0c;用于高效地存储、管理和查询带有时间戳…

【neteq】tgcall的调用

G:\CDN\P2P-DEV\Libraries\tg_owt\src\call\call.cc基本是按照原生webrtc的来的:G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\group\GroupInstanceCustomImpl.cpptg对neteq的使用 worker 线程创建call Call的config需要neteqfactory Call::CreateAu…