溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

發(fā)布時(shí)間:2021-10-12 16:44:40 來(lái)源:億速云 閱讀:114 作者:柒染 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)如何理解ASP.NET 4中構(gòu)造HTML5視頻控件,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

如何使用Visual Studio 2010和ASP.NET 4的相關(guān)知識(shí),打造一個(gè)基于HTML5標(biāo)準(zhǔn)規(guī)范的視頻播放控件,其中你會(huì)學(xué)習(xí)到一些關(guān)于HTML 5的知識(shí),還會(huì)學(xué)到如何使用ASP.NET 4去打造一個(gè)服務(wù)端的控件。

簡(jiǎn)介

ASP.NET 4中有大量由微軟或第三方提供的控件,但要是這些控件不能滿足你的需求,那該怎么辦呢?答案是:自己動(dòng)手去設(shè)計(jì)!

本教程會(huì)指導(dǎo)你如何去開(kāi)發(fā)一個(gè)ASP.NET 的服務(wù)端控件,你會(huì)感受到在開(kāi)發(fā)自己的服務(wù)端控件的同時(shí),也提升了你開(kāi)發(fā)的Web應(yīng)用的質(zhì)量。我們一般在開(kāi)發(fā)自己的服務(wù)端控件的時(shí)候,會(huì)繼承已有的一些服務(wù)端控件并添加一些自己的功能。當(dāng)開(kāi)發(fā)完服務(wù)端控件后,我們可以在不同的工程中共享這個(gè)控件。一般地,我們會(huì)把開(kāi)發(fā)后經(jīng)過(guò)編譯的控件放在Web控件庫(kù),跟我們正常的工程分開(kāi)。當(dāng)我們要在某個(gè)項(xiàng)目中用到該控件時(shí),只需要簡(jiǎn)單的把它拖拉到設(shè)計(jì)界面中去,就完成了,十分簡(jiǎn)單。

HTML5 Video概述

目前,HTML5已經(jīng)慢慢開(kāi)始流行了,在很多非IE的瀏覽器(IE 9中對(duì) HTML5有相當(dāng)好的支持)已經(jīng)支持很多HTML5的特性了。現(xiàn)在,還沒(méi)有很統(tǒng)一的播放視頻的方式,大多數(shù)是靠FLASH或者其他播放器插件,因此在HTML5規(guī)范中,就定義了播放視頻的標(biāo)準(zhǔn),其中目前支持兩種視頻格式:Ogg文件(Ogg全稱應(yīng)該是OGGVobis(oggVorbis)是一種新的音頻壓縮格式,類似于MP3等的音樂(lè)格式。Ogg是完全免費(fèi)、開(kāi)放和沒(méi)有專利限制的。OggVorbis文件的擴(kuò)展名是.OGG。Ogg文件格式可以不斷地進(jìn)行大小和音質(zhì)的改良,而不影響舊有的編碼器或播放器)和

MPEG4文件格式。在HTML5中,要展示一個(gè)視頻,可以用如下方式實(shí)現(xiàn):

<video width="320" height="240" controls="controls">   <source src="movie.ogg" type="video/ogg" />   <source src="movie.mp4" type="video/mp4" /> </video>

這個(gè)控件有象Play,pause和音量等屬性,也有寬度和高度兩個(gè)屬性。下面是相關(guān)的屬性列表:

autoplay:該屬性表明視頻加載后是否自動(dòng)播放還是需要有人工播放

controls: 指定該控件是否顯示。

height:播放器的高度。

loop:指定設(shè)置該控件是否循環(huán)播放視頻

preload: 指定控件是否在頁(yè)面加載時(shí)就開(kāi)始加載視頻,如果不設(shè)置該屬性,則默認(rèn)是autoplay屬性。

src: 播放視頻文件的路徑。

width: 播放器的寬度

poster: 當(dāng)沒(méi)有視頻時(shí),顯示的圖片。

下面我們就開(kāi)始一步步設(shè)計(jì)該視頻控件了

步驟1

首先我們使用的是Visual Studio 2010,當(dāng)然你也可以使用免費(fèi)的Visual Web Developer Express。

我們要設(shè)計(jì)的HTML5視頻播放器只是一個(gè)簡(jiǎn)單的例子,在不同的支持HTML5的瀏覽器中可能外觀稍微有點(diǎn)不同,比如在FireFox下,會(huì)是如下圖的樣子:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

步驟2  創(chuàng)建自定義組件工程

首先,我們必須創(chuàng)建一個(gè)新的類庫(kù)工程去存放我們的自定義控件。當(dāng)在單獨(dú)分離的類庫(kù)中創(chuàng)建了自定義控件后,我們可以將其編譯為單獨(dú)的DLL,這樣在其他項(xiàng)目中需要的時(shí)候就可以用到了。

用Visual Studio 2010打開(kāi)你已經(jīng)建立好的asp.net web項(xiàng)目方案,在方案資源瀏覽器中,鼠標(biāo)右擊方案名,在彈出的菜單中選擇新增項(xiàng)目。在接下來(lái)彈出的菜單中,選擇工程類型為Web,并且選擇ASP.NET Server Control,將工程命名為CustomerControl,點(diǎn)確定完成這個(gè)步驟,如下圖:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

步驟3 開(kāi)始設(shè)計(jì)自定義的Web控件

在資源管理器中,右鍵點(diǎn)CustomControls工程,選擇“Add New Item”,再在彈出的菜單中選擇Web的分類目錄,然后在模版中選擇ASP.NET Server Control選項(xiàng),如下圖:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

將控件命名為:VideoPlayer.cs,點(diǎn)確定,***Visual Studio為我們生成了初步的代碼如下:

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Linq;  using System.Text;  using System.Web;  using System.Web.UI;  using System.Web.UI.WebControls;  namespace CustomControls  {  [DefaultProperty("Text")]  [ToolboxData("<{0}:VideoPlayer runat=server>")]  public class VideoPlayer : WebControl  {  [Bindable(true)]  [Category("Appearance")]  [DefaultValue("")]  [Localizable(true)]  public string Text  {  get {  String s = (String)ViewState["Text"];  return ((s == null) ? "[" + this.ID + "]" : s);  }  set {  ViewState["Text"] = value;  }  }  protected override void RenderContents(HtmlTextWriter output)  {  output.Write(Text);  }  }  }

我們要來(lái)修改上面的代碼,修改后的代碼如下:

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Linq;  using System.Text;  using System.Web;  using System.Web.UI;  using System.Web.UI.WebControls;   namespace CustomControls  {          [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]      public class VideoPlayer : WebControl      {       }  }

注意的是,默認(rèn)的代碼中,為控件生成了Text屬性,然而這里并不需要,因此我們把

[DefaultProperty("Text")]

這行刪除掉。

步驟4 繼續(xù)為控件增加屬性

根據(jù)之前的介紹,我們開(kāi)始為控件增加一些屬性,要增加的屬性如下:

VideoUrl:指定視頻播放的地址。

PosterUrl: 這個(gè)是當(dāng)沒(méi)有視頻時(shí),顯示的替代圖片的地址。

AutoPlay:指示視頻是否自動(dòng)裝載播放。

DisplayControlButtons: 指示是否顯示或者隱藏播放的相關(guān)按鈕。

Loop: 指示視頻是否自動(dòng)播放。

增加屬性后的代碼如下:

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Linq;  using System.Text;  using System.Web;  using System.Web.UI;  using System.Web.UI.WebControls;  namespace CustomControls  {      [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]      public class VideoPlayer : WebControl      {          private string _Mp4Url;          public string Mp4Url          {              get { return _Mp4Url; }              set { _Mp4Url = value; }          }           private string _OggUrl = null;          public string OggUrl          {              get { return _OggUrl; }              set { _OggUrl = value; }          }           private string _Poster = null;          public string PosterUrl          {              get { return _Poster; }              set { _Poster = value; }          }           private bool _AutoPlay = false;          public bool AutoPlay          {              get { return _AutoPlay; }              set { _AutoPlay = value; }          }           private bool _Controls = true;          public bool DisplayControlButtons          {              get { return _Controls; }              set { _Controls = value; }          }           private bool _Loop = false;          public bool Loop          {              get { return _Loop; }              set { _Loop = value; }          }      }  }

步驟5 修改RenderContents方法

服務(wù)端控件的主要目的就是向?yàn)g覽器輸出內(nèi)容。因此,作為開(kāi)發(fā)者,我們就必須設(shè)定好我們的控件要向客戶端瀏覽器輸出什么樣的內(nèi)容。因此,我們可以重寫RenderContents方法即可,如下代碼:

protected override void RenderContents(HtmlTextWriter output)  {  }

要注意的是,該方法有個(gè)參數(shù)是以HtmlTextWriter為對(duì)象的output,它可以設(shè)置向?yàn)g覽器輸出HTML,它有很多方法和屬性,比如AddAttribute和RenderBeginTag。

接下來(lái)我們?yōu)榭丶黾酉驗(yàn)g覽器輸出的方法代碼了,如下:

protected override void RenderContents(HtmlTextWriter output)  {      output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);      output.AddAttribute(HtmlTextWriterAttribute.Width, this.Width.ToString());      output.AddAttribute(HtmlTextWriterAttribute.Height, this.Height.ToString());       if (DisplayControlButtons == true)      {          output.AddAttribute("controls", "controls");      }       if (PosterUrl != null)      {          output.AddAttribute("poster", PosterUrl);      }       if (AutoPlay == true)      {          output.AddAttribute("autoplay", "autoplay");      }       if (Loop == true)      {          output.AddAttribute("loop", "loop");      }  }

步驟6 輸出VIDEO標(biāo)簽內(nèi)容

緊接著,就可以輸出video標(biāo)簽內(nèi)的內(nèi)容了,接著增加如下代碼:

output.RenderBeginTag("video");  if (OggUrl != null)  {      output.AddAttribute("src", OggUrl);      output.AddAttribute("type", "video/ogg");      output.RenderBeginTag("source");      output.RenderEndTag();  }   if (Mp4Url != null)  {      output.AddAttribute("src", Mp4Url);      output.AddAttribute("type", "video/mp4");      output.RenderBeginTag("source");      output.RenderEndTag();  }  output.RenderEndTag();

我們?cè)谳敵鰳?biāo)簽的內(nèi)容時(shí),先使用了RenderBeginTag方法往瀏覽器端輸出一個(gè)標(biāo)簽video,并使用RenderEndTag指示標(biāo)簽內(nèi)容已經(jīng)輸出完畢。接下來(lái)在上面的代碼中我們判斷指定的文件格式的視頻文件是否存在,如果存在的話,則按指定的文件格式輸出。

***,為了防止ASP.NET 控件在向?yàn)g覽器輸出時(shí),帶有span標(biāo)簽,我們可以把它移走,只需要重寫render方法即可,如下:

protected override void Render(HtmlTextWriter writer)  {      this.RenderContents(writer);  }

步驟7 編譯生成控件

選擇Build 菜單,生成整個(gè)解決方案,如下圖:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

步驟8 將控件放到工具箱去

接下來(lái)要把我們做好的控件放到工具箱中去以方便今后使用。步驟如下:

1) 打開(kāi)工具箱視圖,鼠標(biāo)右鍵在空白的地方,在彈出的菜單中點(diǎn)choose item,

2) 在彈出的菜單中選擇.NET 組件卡,并選擇瀏覽,瀏覽我們剛做好的CustomerControll工程中的bin\debug目錄下的CustomControls.DLL,***點(diǎn)確定,如下圖所示:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

這個(gè)時(shí)候,該控件就會(huì)在工具箱出現(xiàn)了,如下圖:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

步驟8 把控件加到aspx頁(yè)面

我們可以隨便新建立一個(gè)aspx頁(yè)面,把控件從工具箱拖拉到頁(yè)面中就可以了,可以看到如下代碼:

<cc1:VideoPlayer ID="VideoPlayer1" runat="server" Mp4Url="videos/movie.mp4" OggUrl="videos/movie.ogg" Width="400" Height="300" />

我們還可以在design設(shè)計(jì)視圖時(shí),具體指定這個(gè)控件的每個(gè)屬性的值得了,看,是不是很簡(jiǎn)單方便?

***運(yùn)行我們的程序,可以看到如下所示的播放器了:

如何理解ASP.NET 4中構(gòu)造HTML5視頻控件

以上就是如何理解ASP.NET 4中構(gòu)造HTML5視頻控件,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI