Criando Thumbnails de vídeos

Como não existem componentes grátis para essa função, teremos que improvisar, usando um programa externo, para isso você vai precisar alterar a segurança da pasta.

Como não existem componentes grátis para essa função, teremos que improvisar, usando um programa externo, para isso você vai precisar alterar a segurança da pasta. Mas veremos isso mais para frente. Vamos aproveitar para fazer o sistema completo, desde o upload do arquivo.

Iniciando o exemplo

Com o Visual Studio aberto, crie um novo Web Form, com o nome que preferir. Aqui vamos usar EnviarVideo.aspx:

Figura 1. Criando aplicação

Agora, abra a Toolbox, arraste um controle File Upload, Button (ou Link Button, como você preferir) e uma Label.

Figura 2. Inserindo componentes

Com um duplo clique no objeto Button ele irá criar a ação.

Preencha conforme a Listagem 1:

01 - protected void Button1_Click(object sender, EventArgs e) 02 - { 03 - if (FileUpload1.HasFile) 04 - { 05 - string arq_tipo = FileUpload1.FileName.Remove(0, FileUpload1.FileName.Length - 3); 06 - if (arq_tipo.ToString() == "wmv") 07 - { 08 - string video = Server.MapPath("upload/") + "nome_do_video.wmv"; 09 - string imagem = Server.MapPath("upload/") + "nome_da_imagem.jpg"; 10 - FileUpload1.SaveAs(video); 11 - } 12 - } 13 - }
Listagem 01. Enviando vídeo

Para quem já estiver familiarizado com o C# será simples entender, mas vamos explicar por partes.

Linha 03: Verificamos se tem o arquivo foi escolhido.

Linhas 05 e 06: pegamos a extensão do arquivo e verificamos sé um vídeo.

Linha 08 e 09: indicam o nome e a pasta dos arquivos a serem salvos (vídeo e imagem, respectivamente).

Linha 10: o vídeo é salvo.

A primeira parte, o upload está pronta. Vamos agora ao que realmente interessa, como tirar uma thumbnail de um arquivo de vídeo.

Para isso vamos usar um programa chamado FFMPEG, segue o aplicativo junto com o material fonte (você também pode encontra-lo no Google).

Coloque ele numa pasta chamada ffmpeg, dentro da mesma pasta da página que estamos criando a página que vai executar o programa. Nessas duas pastas você deve dar autorização para Ler, Gravar e Executar.

Depois da linha 10, vamos incluir conforme a Listagem 02:

01 - string executavel = Server.MapPath("ffmpeg/ffmpeg.exe"); 02 - string parametros = " -y -i " + video + " -vframes 1 -ss 00:00:03 -an -vcodec mjpeg -f rawvideo " + imagem; 03 - System.Diagnostics.Process.Start(@executavel, parametros);
Listagem 2. Configurando captura de imagem

Veja o que foi feito:

Linha 01: informamos o local do arquivo executável.

Linha 02: definimos os parâmetros para execução do programa. Existem vários parâmetros, mas vou comentar apenas os mais importantes:

Depois, vamos informar ao usuário que o arquivo foi salvo:

01 - Label1.Text = "Vídeo enviado!";

O código final ficará igual a Listagem 03:

using System; using System.Data; using System.Configuration; using System.Collections; 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; public partial class EnviarVideo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { string arq_tipo = FileUpload1.FileName.Remove(0, FileUpload1.FileName.Length - 3); if (arq_tipo.ToString() == "wmv") { string video = Server.MapPath("upload/") + "nome_do_video.wmv"; string imagem = Server.MapPath("upload/") + "nome_da_imagem.jpg"; FileUpload1.SaveAs(video); string executavel = Server.MapPath("ffmpeg/ffmpeg.exe"); string parametros = " -y -i " + video + " -vframes 1 -ss 00:00:03 -an -vcodec mjpeg -f rawvideo " + imagem; System.Diagnostics.Process.Start(@executavel, parametros); Label1.Text = "Vídeo enviado!"; } } } }
Listagem 03. Código completo

Lembrem-se de colocar as permissões nas pastas, mas atenção, preferencialmente crie uma pasta separada e use autenticação pois essas permissões vão diminuir a segurança da sua aplicação.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados