C# - Exibindo vídeos do Youtube


Exibir vídeos do YouTube em aplicações C# é muito mais fácil e simples do que parece e neste artigo eu vou mostrar que isso é verdade.

Abra o Visual C# 2010 Express Edition e crie um novo projeto via menu File-> New Project do tipo Windows Forms Application com o nome CSharpYoutube;

A seguir no formulário selecione abra a ToolBox e expanda a guia Common Controls;

Clique com o botão direito do mouse sobre a guia e no menu suspenso selecione a opção Choose Items...

Na janela Choose ToolBox Itens clique na guia COM Components e procure pelo componente Shockwave Flash Object marcando e clicando em OK;

A seguir inclua o formulário form1.cs os controles:

Defina o leiaute conforme a figura abaixo:

Na propriedade Movie do controle Flash vamos atribuir uma URL referente a um vídeo do YouTube. Você pode usar qualquer vídeo, no exemplo eu estou usando a seguinte url: http://www.youtube.com/v/96HW4eyZsCQ

Após isso teremos a seguinte visualização no formulário em tempo de projeto:

Para cada evento Click dos botões de comandos vamos atribuir algumas URLs referentes a vídeos do Youtube que desejamos exibir quando o botão for clicado:

 private void button1_Click(object sender, EventArgs e)
        {
            axShockwaveFlash1.Movie = "http://www.youtube.com/v/zkHXiPD-UNM&autoplay=1";
        }
        private void button2_Click(object sender, EventArgs e)
        {
            axShockwaveFlash1.Movie = "http://www.youtube.com/v/-3yusWweALQ&feature=related&autoplay=1";
        }
        private void button3_Click(object sender, EventArgs e)
        {
            axShockwaveFlash1.Movie = "http://www.youtube.com/v/JaW1aDog8nQ&autoplay=1";
        }
        private void button4_Click(object sender, EventArgs e)
        {
            axShockwaveFlash1.Movie = "http://www.youtube.com/v/OSWoco4cnoA&autoplay=1";
        }
        private void button5_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Confirma o encerramento da aplicação ?", "Encerrar", MessageBoxButtons.YesNo, 
MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Close();
            }
        }

Cada URL foi obtida a partir a URL original do vídeo removendo Watch? e substituindo o = por / na URL original. O acréscimo &Autoplay=1 ao final da URL faz com que o vídeo seja executado diretamente.

Após isso ao clicar em qualquer um dos botões teremos a exibição do vídeo no componente Flash:

Podemos ainda fornecer uma URL obtida de um vídeo do Youtbe e colar na caixa de texto e clicar no botão - Rodar Vídeo - para executar o vídeo.

Antes temos que tratar a URL original removendo watch? e substituindo = por ? , e ao final acrescentar &autoplay=1 ao final da URL.

Abaixo temos o código que faz isso no evento Click do botão - Rodar Vídeo.

private void btnExecutar_Click(object sender, EventArgs e)
{
            string urlValida = "";
            if (txtUrl.Text != string.Empty)
            {
                urlValida = validaUri(txtUrl.Text.Trim());
                urlValida = urlValida + "&autoplay=1";
            }
            axShockwaveFlash1.Movie = urlValida;
}

A função validaUrl retorna a URL pronta para ser executada:

public string validaUri(string url)
{
            if (url.IndexOf("watch?v=") >= 0)
            {
                url = url.Replace("watch?", "");
                url = url.Replace("=", "/");
            }
            return url;
}

Você pode incrementar o exemplo incluindo outras possibilidades de controle dos vídeos.

Pegue o projeto completo aqui: CSharpYouTube.zip

Rom 8:22 Porque sabemos que toda a criação, conjuntamente, geme e está com dores de parto até agora;
Rom 8:23
e não só ela, mas até nós, que temos as primícias do Espírito, também gememos em nós mesmos, aguardando a nossa adoração, a saber, a redenção do nosso corpo.
Rom 8:24
Porque na esperança fomos salvos. Ora, a esperança que se vê não é esperança; pois o que alguém vê, como o espera?

Rom 8:25
Mas, se esperamos o que não vemos, com paciência o aguardamos.

Referências:


José Carlos Macoratti