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

  

本文阐述了基于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.mzph.cn/web/6267.shtml

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

相关文章

llama-factory/peft微调千问1.5-7b-chat

目标 使用COIG-CQIA数据集和通用sft数据集对qwen1.5-7b-chat进行sft微调,使用公开dpo数据集进行dpo对齐。学习千问的长度外推方法。 一、训练配置 使用Lora方式, 将lora改为full即可使用全量微调。 具体的参数在 该框架将各个参数、训练配置都封装好了,直接使用脚本,将数…

Redis高并发可用-主从复制,集群

Redis高并发可用 1 复制 默认情况下&#xff0c;Redis都是主节点。每个从节点只能有一个主节点&#xff0c;而主节点可以同时具有多个从节点。复制的数据流是单向的&#xff0c;只能由主节点复制到从节点。 1.1 复制的拓扑结构 一主一从&#xff1a; 主一从结构是最简单的…

【全网最全】2024五一数学建模B题前四问代码多种保奖进阶思路+建模过程+代码+数据处理+论文写作技巧等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;这是获取资料的入口&#xff01; 【全网最全】2024五一数学建模B题前四问代码多种保奖进阶思路建模过程代码数据处理论文写作技巧等&#xff08;后续会更新&#xff09;「首先来看看目前已有…

LeetCode 94.二叉树的中序遍历

题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;root [1] …

R语言学习—1—将数据框中某一列数据改成行名

将数据框中某一列数据改成行名 代码 结果

观察者模式实战:解密最热门的设计模式之一

文章目录 前言一、什么是观察者模式二、Java实现观察者模式2.1 观察者接口2.2 具体观察者2.3 基础发布者2.4 具体发布者2.5 消息发送 三、Spring实现观察者模式3.1 定义事件类3.2 具体观察者3.3 具体发布者3.4 消息发送 总结 前言 随着系统的复杂度变高&#xff0c;我们就会采…

vivado Aurora 8B/10B IP核(9)- CRC、 Aurora 8B/10B内核的时钟接口端口

CRC 模块提供 16 位或 32 位 CRC&#xff0c;用于用户数据。 Aurora 8B/10B 内核的时钟接口端口 从相邻收发器四边形的时钟Xilinx 实现工具可以根据需要对南北路由和引脚交换到收发器时钟输入进行必要的调整&#xff0c;以将时钟从一个四线到另一个。 重要信息&#xff1a;共…

踏上R语言之旅:解锁数据世界的神秘密码(五)

线性与非线性模型及R使用 文章目录 线性与非线性模型及R使用一、数据的分类与模型选择1.变量的取值类型 二、广义线性模型广义线性模型概述Logistic模型 总结 一、数据的分类与模型选择 1.变量的取值类型 因变量记为y&#xff0c;解释变量记为x1&#xff0c;x2,… 因变量y一般…

第三节课,功能2:开发后端用户的管理接口-- postman--debug测试

一、如何使用postman 网址&#xff1a; https://www.postman.com/downloads/ 【Postman小白教程】五分钟学会如何使用Postman~_哔哩哔哩_bilibili postman安装使用_bowser agent在postman哪里-CSDN博客 二、下载后 登录&#xff0c;开始测试 2.1 关于postman 报错&#…

MTEB - Embedding 模型排行榜

文章目录 关于 MTEBMTEB 任务和数据集概览使用 MTEB Pythont 库Installation使用 关于 MTEB MTEB : Massive Text Embedding Benchmark github : https://github.com/embeddings-benchmark/mtebhuggingface : https://huggingface.co/spaces/mteb/leaderboardpaper : https:/…

【Java EE】CAS原理和实现以及JUC中常见的类的使用

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

asyncionetworkxFuncAnimation学习--动态显示计算图的运行情况

asyncio&networkx&FuncAnimation学习--动态显示计算图的运行情况 一.效果二.代码 一.目的 1.动态显示计算图的运行状态(点或边是否已完成) 二.步骤: 1.定义计算图 2.asyncio 并行计算 3.networkx 显示计算图 4.FuncAnimation 动态更新 三.依赖: conda install pygraphv…

数据结构--栈与队列【您的关注是我创作的动力!】

文章目录 栈什么是栈&#xff1f;栈的具体实现 队列什么是队列&#xff1f;队列的实现 栈 什么是栈&#xff1f; 栈也是顺序表的一种&#xff0c;栈的逻辑实现是先进后出&#xff08;后进先出&#xff09;就跟子弹夹一样。 具体逻辑就是它只允许在固定的一端进行数据的插入与…

PHP源码_最新Ai对话系统网站源码 ChatGPT+搭建教程+前后端

基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代码&#xff0c;写论…

C# Web控件与数据感应之 CheckBoxList 类

目录 关于数据感应 CheckBoxList 类 范例运行环境 数据源表设计 角色字典表 用户角色表 AutoValueDBList 方法 原理 设计 实现 调用示例 初始化数据 启动查询模式 使用保存模式 小结 关于数据感应 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;We…

【Docker学习】docker version查看版本信息

就像很多应用一样&#xff0c;docker也使用version来查看版本信息。但因为docker包含有不少独立组件&#xff0c;version的作用范围会更广一些。 用法1&#xff1a; docker --version 描述&#xff1a; 输出安装的Docker CLI 的版本号。关于Docker CLI&#xff0c;请访问。 实操…

项目管理-项目范围管理2/2

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 项目范围管理&#xff0c;过程 6个&#xff0c;包括“规收定 创确控”&#xff1a; 规划范围管理收集需求定义范围创建WBS确认范围控制…

怎么证明E[E(X|Y,Z)Y]= E(X|Y)

性质8的证明 物理意义

webpack基础---常用loader

webpack 命令式和配置文件 html-webpack-plugin 配置项&#xff1a;{ templete: filename: inject: } 清除上次打包的文件&#xff0c;output: { clear: true } mode选项&#xff1a; none development prodution souce-map&#xff1a;可以精准定位代码行数 { devt…

【Android学习】简易计算器的实现

1.项目基础目录 新增dimens.xml 用于控制全部按钮的尺寸。图片资源放在drawable中。 另外 themes.xml中原来的 <style name"Theme.Learn" parent"Theme.MaterialComponents.DayNight.DarkActionBar">变为了&#xff0c;加上后可针对button中增加图片…