Vous êtes sur la page 1sur 6

Linha de Cdigo - Criando um Web Control para tocar arquivos de udio e vdeo Pgina 1 de 6

sbado, 20 de outubro de 2007 Busca

Artigo

Criando um Web Control para tocar arquivos de udio e vdeo


Por: Fabiano Vitucci Santiago
E-mail: fabianosan@hotmail.com
Analista de Sistemas das Faculdades Santo Agostinho e i4 Design Solues em Montes Claros -
MG, trabalha com Desenvolvimento de aplicativos Web, Windows e Mobile a 7 anos e a 5 se
dedica ao estudo e desenvolvimento com a Plataforma .NET.
www.i4design.com.br / www.santoagostinho.edu.br

Feed de artigos.

Feed de artigos deste autor.

Gere seu feed personalizado Assunto

Criando um Web Control para tocar arquivos de udio e vdeo


Publicado em: 11/04/2007

Artigo recomendado para Visual Studio 2005

Introduo

Neste artigo aprenderemos como criar um Web Control para tocar arquivos multimdia em uma
pgina ASP.NET, eliminando a necessidade de qualquer linha de cdigo depois que o controle
estiver pronto.

Codificando

Para iniciar nosso artigo, abra o Visual Studio.NET 2005 e crie um Novo Projeto > C# >
Windows > Web Control Library com o nome de TocaMultimidia. Agora renomeie o
arquivo: WebCustomControl1.cs para TocaMultimdia.cs. Em seguida abra o arquivo e
vamos codificao do mesmo. Veja como ficou o cdigo C# do Web Control [listagem 1].
Para no ter dvidas, o cdigo est todo comentado:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TocaMultimidia
{
[ToolboxData("<{0}:TocaMultimidia runat=server></
{0}:TocaMultimidia>")]
public class TocaMultimidia : WebControl
{

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1282 20/10/2007
Linha de Cdigo - Criando um Web Control para tocar arquivos de udio e vdeo Pgina 2 de 6
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}

[Category("Arquivo de Multimdia")]
[DefaultValue("mini")]
[Description("Define a forma de exibio do controle:
[invisible, none, mini, full]")]
public string uiMode
{
get
{
String u = (String)ViewState["uiMode"]; return ((u ==
null) ? String.Empty : u);
}
set
{
ViewState["uiMode"] = value;
}
}

[Category("Arquivo de Multimdia")]
[DefaultValue(false)]
[Description("Define se o clipe tocar uma vez ou
infinitamente")]
public bool Loop
{
get
{
return ((ViewState["Loop"] == null) ? true : (bool)
ViewState["Loop"]);
}
set
{
ViewState["Loop"] = value;
}
}

[Category("Arquivo de Multimdia")]
[DefaultValue(true)]
[Description("Define se o clipe tocar assim que carregar")]
public bool AutoStart
{
get
{
return ((ViewState["AutoStart"] == null) ? true :
(bool)ViewState["AutoStart"]);
}
set
{
ViewState["AutoStart"] = value;
}
}

[Category("Arquivo de Multimdia")]
[DefaultValue(true)]
[Description("Envia o status do clipe em execuo")]
public bool SendPlayStateChangeEvents
{
get
{
return ((ViewState["SendPlayStateChangeEvents"] ==
null) ? true : (bool)ViewState["SendPlayStateChangeEvents"]);
}
set
{
ViewState["SendPlayStateChangeEvents"] = value;
}
}

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1282 20/10/2007
Linha de Cdigo - Criando um Web Control para tocar arquivos de udio e vdeo Pgina 3 de 6

[Category("Arquivo de Multimdia")]
[DefaultValue(true)]
[Description("Nmero de vezes que o clipe ser tocado")]
public int PlayCount
{
get
{
return ((ViewState["PlayCount"] == null) ? 0 : (int)
ViewState["PlayCount"]);
}
set
{
ViewState["PlayCount"] = value;
}
}

[Category("Arquivo de Multimdia")]
[DefaultValue("")]
[Description("Informe o caminho do clipe de udio ou vdeo")]
public string urlMidia
{
get
{
String s = (String)ViewState["urlMidia"]; return ((s ==
null) ? String.Empty : s);
}
set
{
ViewState["urlMidia"] = value;
}
}

//Sobreescrevendo o mtodo RenderContents de forma a renderizar


o html customizado que precisamos
protected override void RenderContents(HtmlTextWriter output)
{
try
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<OBJECT id=\"{0}\" name=\"{0}\"
width=\"{1}\" height=\"{2}\"",base.ClientID,base.Width.ToString
(),base.Height.ToString());
sb.Append(" CLASSID=\"CLSID:6BF52A52-394A-11d3-B153-
00C04F79FAA6\"");
sb.Append(" type=\"application/x-oleobject\">");
sb.AppendFormat(" <PARAM NAME=\"URL\" VALUE=\"{0}
\">",urlMidia);
sb.AppendFormat(" <PARAM
NAME=\"SendPlayStateChangeEvents\" VALUE=\"{0}
\">",SendPlayStateChangeEvents);
sb.AppendFormat(" <PARAM NAME=\"AutoStart\"
VALUE=\"{0}\">",AutoStart.ToString());
sb.AppendFormat(" <PARAM name=\"uiMode\" value=\"{0}
\">",uiMode);
sb.AppendFormat(" <PARAM name=\"PlayCount\"
value=\"{0}\">",PlayCount.ToString());
sb.AppendFormat(" <PARAM name=\"Loop\" value=\"{0}\">",
Loop.ToString());
sb.Append("</OBJECT>");

output.RenderBeginTag(HtmlTextWriterTag.Div);
output.Write(sb.ToString());
output.RenderEndTag();
}
catch (Exception ex)
{
output.RenderBeginTag(HtmlTextWriterTag.Div);
output.Write(ex.Message);
output.RenderEndTag();

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1282 20/10/2007
Linha de Cdigo - Criando um Web Control para tocar arquivos de udio e vdeo Pgina 4 de 6

}
}
}
}
Listagem 1 Cdigo C# para gerar o controle

Entendendo o cdigo

No cdigo acima definimos a formao da tag do Web Control, as propriedades do Web Control
e no final renderizamos o objeto com suas propriedades usando HTML. Vamos entender o
cdigo:

1. No cdigo da listagem 2 definimos a tag do Web Control que ser exibida no HTML do Web
Form:

[ToolboxData("<{0}:TocaMultimdia runat=server></{0}:TocaMultimdia >")]


Listagem 2 Definio da tag do Web Control

2. No cdigo abaixo, vemos a definio de um das propriedades do Web Control. Para no


alongar demais o artigo, vou explicar somente alguns atributos usados:

 [Category("Arquivo de Multimdia")]: Define a categoria da propriedade. Se


colocarmos um nome qualquer e usarmos em todas as propriedades, elas ficaram
organizadas no mesmo box;
 [DefaultValue(false)] e Description("Informe o caminho do arquivo de
udio")]: No precisamos de muita explicao. O primeiro define o valor padro da
propriedade e o segundo a descrio da propriedade;
 return ((ViewState["FullScreen"] == null) ? true :(bool)ViewState
["FullScreen"]): Na propriedade do controle, salvamos e recuperamos os valores de
um ViewState.

3. Ao final, sobrescrevemos o mtodo RenderContents para renderizarmos o HTML


personalizado com as tags do objeto e suas propriedades.

Finalizando o projeto do Web Control

Altere a compilao de Debug > Release. Compile o novo Web Control e vamos para a
prxima etapa.

Criando um Projeto para testarmos nosso novo Web Control

Abra o Visual Studio.NET 2005 e crie um Novo Projeto > C# > ASP.NET Web Application
com o nome de TocaMultimidiaTeste:

1. Adicione a referncia do novo Web Control ao Toolbox [figura 1 e 2]:

Figura 1 Adicionando o Web Control ao toolbox

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1282 20/10/2007
Linha de Cdigo - Criando um Web Control para tocar arquivos de udio e vdeo Pgina 5 de 6

Figura 2 Adicionando a referncia do Assembly

2. Agora arraste o nosso Web Control (TocaMultimidia) para o Web Form [Figura 3]. Vamos
definir as propriedades bsicas para fazermos nosso teste [figura 4]:

Figura 3 Web Control no toolbox

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1282 20/10/2007
Linha de Cdigo - Criando um Web Control para tocar arquivos de udio e vdeo Pgina 6 de 6

Figura 4 Box com as propriedades do nosso controle

Pronto, agora clique com o boto direito em cima do projeto: TocaMultimdiaTeste > Set as
StartUp Project. O projeto de teste ficar em negrito [figura 5], rode o exemplo com F5 e
bom trabalho!

Figura 5 Solution Explorer com os dois projetos

Concluso

Nesse artigo vimos como simples criar um Web Control para tocar arquivos multimdia, tanto
udio como vdeo, usando o Windows Mdia Player em uma pgina ASP.NET.

O desenvolvimento de um Web Control interessante por que no precisamos de uma linha de


cdigo para tocar arquivos multimdia. Permite-nos definir qual arquivo multimdia ser tocado;
Possibilita definir opes e caractersticas do Player, inclusive vindo de uma fonte de dados.
Abrindo caminho para criarmos bibliotecas de msicas e vdeos, a exemplo do You Tube.

Referncias:
Cdigo fonte:
[TocaMultimidia.zip]

Copyright 2001-2007 Codeline Editora, Comrcio e Tecnologia Ltda. | Poltica de privacidade e de uso | Anuncie | Fale conosco

Site hospedado na Porta 80 Web Hosting

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1282 20/10/2007