C# - Executando arquivos de áudio e vídeo em uma aplicação Windows Forms - II


 Neste artigo vou mostrar como executar arquivos de áudio e de vídeo em uma aplicação Windows Forms usando a linguagem C#.

Na primeira parte do artigo já implementamos a seleção, a compactação e o armazenamento dos arquivos no banco de dados SQL Server vejamos agora como selecionar e executar um arquivo.

Recursos Usados

Criando o projeto Windows Forms

Abra o projeto CSharp_ArquivosVideos criado na primeira parte do artigo no VS 2015 Community;

Selecionando e executando um arquivo no Windows Media Player

No evento Click do botão Executar inclua o código abaixo:

       private void btnExecutar_Click(object sender, EventArgs e)
        {
            if (cboArquivos.SelectedItem == null)
            {
                MessageBox.Show("Selecione um arquivo a executar.");
                return;
            }
            var midia=((DataRowView)cboArquivos.SelectedItem).Row["FileName"];
            wmp1.URL = ObterDoBancoDados(midia.ToString());
            wmp1.settings.autoStart = true;
        }

Este código verifica se um item da combobox foi selecionado.

Em caso positivo convertemos o item selecionado, que é do tipo DataRowView, para obter o nome do arquivo.

Usamos a instância do Windows Media Player - wmp1 - para obter a URL do arquivo chamando o método ObterDoBancoDados() passando o nome do arquivo.

A seguir executamos o arquivo no Windows Media Player.

O código do método ObterDoBancoDados() é visto abaixo:

       private string ObterDoBancoDados(string nomeArquivo)
        {
            try
            {
                String Consulta = "SELECT FileData FROM [Cadastro].[dbo].[Midias] where FileName = '" + nomeArquivo + "'";
                SqlDataAdapter adapter = new SqlDataAdapter(Consulta, ConnectionString);
                DataSet Ds = new DataSet();
                adapter.Fill(Ds, "Midias");
                if (Ds.Tables[0].Rows.Count == 0)
                {
                    MessageBox.Show("Nenhum arquivo encontrado.");
                    return string.Empty;
                }
                return ConverterByteParaArquivo(nomeArquivo, ObterDadosNaoComprimidos ((byte[])Ds.Tables[0].Rows[0]["FileData"]));
            }
            catch (Exception)
            {
                throw;
            }
        }

Neste código obtemos os dados do arquivo selecionado que esta armazenado na tabela Midias no formato binário.

Usamos os métodos  ConverterByteParaArquivo  ObterDadosNaoComprimidos para obter os dados e descompactar o arquivo antes de executá-lo.

Abaixo temos o código do método ObterDadosNaoComprimidos();

       public static byte[] ObterDadosNaoComprimidos (byte[] valor)
        {
            try
            {
                if (valor != null)
                    using (var zipInputStream = new ZipInputStream(new MemoryStream(valor)))
                    {
                        while ((zipInputStream.GetNextEntry()) != null)
                        {
                            using (var zippedInMemoryStream = new MemoryStream())
                            {
                                var data = new byte[2048];
                                while (true)
                                {
                                    var size = zipInputStream.Read(data, 0, data.Length);
                                    if (size <= 0)
                                        break;
                                    zippedInMemoryStream.Write(data, 0, size);
                                }
                                zippedInMemoryStream.Close();
                                return zippedInMemoryStream.ToArray();
                            }
                        }
                    }
                return null;
            }
            catch (Exception)
            {
                return valor;
            }
        }

O método ConverterByteParaArquivo() converte os bytes armazenados para o arquivo de midia e possui o seguinte código:

        private string ConverterByteParaArquivo(string nomeArquivoDestino, byte[] valor)
        {
            var str = string.Empty;
            try
            {
                try
                {
                    var path = Path.GetTempPath();
                    str = path + "\\" + nomeArquivoDestino;
                    if (File.Exists(str))
                        File.Delete(str);
                }
                catch (Exception)
                {
                    throw;
                }
                var arquivo = (new BinaryWriter(new FileStream(str, FileMode.OpenOrCreate, FileAccess.Write)));
                arquivo.Write(valor);
                arquivo.Close();
                return str;
            }
            catch (Exception)
            {
                throw;
            }
        }

Neste momento já temos todas as funcionalidades que permitem selecionar um arquivo e executar o arquivo no Windows Média Player.

Executando o projeto, selecionando um arquivo e clicando em - Executar Arquivo - teremos o seguinte resultado:

Pegue o código do projeto aqui: CSharp_ArquivosVideos.zip (sem as referências)

"Porque a lei foi dada por Moisés; a graça e a verdade vieram por Jesus Cristo." João 1:17
 

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:


José Carlos Macoratti