Criando Thumbnails de vídeos

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (12)  (1)

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":

gspcthuvidfig01.jpg

Figura 1. Criando aplicação.

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

gspcthuvidfig02.jpg

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:

  • -i video = definimos o arquivo de vídeo que fizemos o upload.
  • -ss 00:00:03 = momento em que a thumbnail será tirada, no caso aos 3 segundos.
  • imgem = local onde a imagem será sava, que definimos antes.
  • você pode encontrar mais parâmetros e formatar da forma que preferir, se fizer alguma melhora, divida com os demais d=).

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.

gspcthuvidfig03.jpg

Pronto! Simples, não?

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?