Neste artigo vou mostrar como executar arquivos de áudio e de vídeo em uma aplicação Windows Forms usando a linguagem C#. |
Criar um banco de dados para armazenar arquivos de áudio e vídeo;
Selecionar arquivos de áudio e vídeo usando o OpenFiledDialog;
Compactar e armazenar esses arquivos na tabela Midias do banco de dado Cadastro.mdf;
Preencher um combobox com os arquivos armazenados no banco de dados;
Selecionar o nome de um arquivo na combobox, descompactar o respectivo arquivo armazenado e executá-lo usando o Windows Media Player;
Os arquivos de áudio e vídeo serão armazenados na tabela Midias no banco de dados Cadastro.mdf que possui a seguinte estrutura:
CREATE TABLE [dbo].[Midias](
[FileId] [uniqueidentifier] NOT NULL,
[FileName] [nchar](500) NOT NULL,
[FileData] [varbinary](max) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
Vamos utilizar o componente COM - Windows Media Player para executar os arquivos.
Vamos usar também a biblioteca ICSharpCode.SharpZipLib no projeto via Nuget para poder compactar e descompactar os arquivos de áudio e vídeo.
Vamos então ao projeto...
Recursos Usados
Criando o projeto Windows Forms
Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem C# e o template Windows Forms Application.
Informe um nome a seu gosto. Eu vou usar o nome CSharp_ArquivosVideos;
No formulário padrão Form1.cs inclua os controles :
1 Label
1 Combobox - cboArquivos
2 Buttons - btnEnviar, btnExecutar
1 Windows Media Player - wpm1
1 OpenFileDialog - ofd1
Incluindo o componente Windows Media Player
Abra a ToolBox e clique com o botão direito sobre a ToolBox e clique em Choose Items...;
Selecione a guia COM Components e marque o item Windows Media Player;
Clique no botão OK;
Disponha os controles conforme o leiaute da figura abaixo:
Incluindo a biblioteca ICSharpCode.SharpZipLib
No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Package for Solution;
Clique em Browse e informe icsharpcode e selecione o pacote ICSharpCode.SharpZipLib.dll e instale-a no projeto;
Selecionando, compactando e armazenando arquivos no SQL Server
Abra o formulário Form1.cs e inclua as seguintes declarações de namespace:
using
System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using ICSharpCode.SharpZipLib.Zip;
Agora vamos criar o método ConnectionString para retornar a string de conexão com o banco de dados cadastro.mdf:
public string ConnectionString
{
get { return "Data Source=.;Initial Catalog=Cadastro;Integrated Security=True"; }
}
|
No evento Load do formulário vamos chamar o método CarregaCombo() que irá preencher a combobox com os dados da tabela Midias:
private void Form1_Load(object sender, EventArgs e)
{
CarregaCombo();
}
|
Abaixo temos o método CarregaCombo() que acessa a tabela Midias e preenche o combobox:
private void CarregaCombo()
{
try
{
String Consulta = "SELECT FileId, FileName FROM Midias";
SqlDataAdapter adapter = new SqlDataAdapter(Consulta, ConnectionString);
DataSet ds = new DataSet();
adapter.Fill(ds, "Midias");
cboArquivos.DataSource = ds.Tables[0];
cboArquivos.DisplayMember = "FileName";
cboArquivos.ValueMember = "FileId";
cboArquivos.SelectedIndex = 0;
}
catch (Exception)
{
throw;
}
}
|
Agora vamos criar o método GetArquivo() para obter o nome do arquivo selecionando pelo usuário via janela de diálogo OpenFileDialog - ofd1:
private string GetArquivo()
{
try
{
ofd1.Filter = "Arquivos (*.*)|*.*";
ofd1.Multiselect = true;
if (ofd1.ShowDialog() == DialogResult.OK)
{
return ofd1.FileName;
}
}
catch (Exception)
{
throw;
}
return string.Empty;
}
|
Precisamos criar o método SalvarNoBancoDados() que vai salvar o nome do arquivo selecionado e o seu conteúdo compactado na tabela Midias :
private bool SalvarNoBancoDados(string nomeArquivo, byte[] dados) { try { var ds = new DataSet(); SqlCommand cmd = new SqlCommand("insert into Midias values('" + Guid.NewGuid() + "','" + nomeArquivo + "',@content)"); SqlParameter param = cmd.Parameters.Add("@content", SqlDbType.VarBinary); param.Value = dados; cmd.Connection = new SqlConnection(ConnectionString); cmd.CommandTimeout = 0; cmd.Connection.Open(); cmd.ExecuteNonQuery(); return true; } catch (Exception) { throw; } } |
Para compactar o arquivo selecionado vamos usar o método ObterArquivoCompactado() que compacta o arquivo selecionado:
public static byte[] ObterArquivoCompactado(string nomeArquivo, byte[] valor) { try { // compactar arquivo - zip if (valor != null && !string.IsNullOrEmpty(nomeArquivo)) using (var zippedMemoryStream = new MemoryStream()) { // ZIP stream using (var zipOutputStream = new ZipOutputStream(zippedMemoryStream)) { zipOutputStream.SetLevel(9);
var entry = new ZipEntry(nomeArquivo) { DateTime = DateTime.Now }; zipOutputStream.Write(valor, 0, ConvertToInt32(valor.Length)); zipOutputStream.Finish(); return zippedMemoryStream.ToArray(); |
Precisamos também converter o arquivo selecionado para bytes usando o método ConverterArquivoParaBytes(arquivo) que será usado pelo método SalvarNoBancoDados();
private static byte[] ConverterArquivoParaBytes(string nomeArquivoOrigem) { BinaryReader leitorBinary = null; if (!File.Exists(nomeArquivoOrigem)) return null;
try |
Agora podemos definir o código do evento Click do botão - Selecionar Arquivo e Salvar - conforme abaixo:
private void btnEnviar_Click(object sender, EventArgs e) { var arquivo = GetArquivo(); var lista = new string[] { ".mp3", ".avi", ".mp4", ".wmv" }; if (!lista.Contains(Path.GetExtension(arquivo))) { MessageBox.Show("Selecione um arquivo"); } else { var resultado = SalvarNoBancoDados(Path.GetFileName(arquivo), ObterArquivoCompactado(arquivo, ConverterArquivoParaBytes(arquivo))); if (resultado) { cboArquivos.Items.Add(Path.GetFileName(arquivo)); MessageBox.Show("Arquivo Salvo com sucesso !!"); } } } |
Neste momento já temos todas as funcionalidades que permitem selecionar um arquivo, salvar o nome do arquivo e seu conteúdo comprimido no banco de dados.
Executando o projeto neste momento e clicando no botão Selecionar Arquivo e Salvar veremos a caixa de diálogo abrir arquivo onde podemo selecionar um arquivo que será salvo na tabela Midias:
Na segunda parte do artigo vamos concluir o projeto implementando a execução do arquivo selecionado no Windows Media Player.
(Disse Jesus) "Se vós estiverdes em
mim, e as minhas palavras estiverem em vós, pedireis tudo o que quiserdes, e
vos será feito. "
João 15:7
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
Preenchendo um controle ListView com DataReader - Macoratti.net