Usuário com melhor resposta
Problema com visualização de mídias no componente do Media Player

Pergunta
-
Olá a todos e uma boa tarde.
Estou com um problema que nao consigo resolver em um aplicativo que estou desenvolvendo.
Tenho uma thread que faz verificações a um xml a cada periodo de tempo. Nesse xml existem o nome de alguns arquivos que devem ser tocados no media player por um certo periodo de tempo, e depois que esse arquivo é tocado, outro arquivo começa ser mostrado.
Cada arquivo deve ser exibido por uma certa quantia de tempo. Por exemplo: Primeiro, exiba o arquivo foto1.jpg por 10 segundos, depois exiba os 30 primeiros segundos de filme.wmv, e assim por diante.
Para fazer o arquivo ser tocado no tempo que eu quero, eu uso Thread.Sleep. Depois que o tempo do Sleep passa, a verificação por arquivos que devem ser tocados começa de novo e sobrescreve o arquivo que está sendo tocado atualmente.
O problema é que quando quero exibir qualquer arquivo, ele é mostrado por 5 segundos e então a tela fica preta até dar o tempo de execução que era esperado e então passa para o próximo arquivo. Por exemplo: Era para mostrar a imagem.jpg por 30 segundos, mas o que acontece é que a imagem é mostrada por 5 segundos e depois some, então a tela fica preta por 25 segundos e o próximo arquivo é mostrado. Isso acontece com todos os arquivos.
Segue o trecho de código que dá o play nos arquivos:
Private Sub TocarMidias() Dim agenda As XDocument Dim dataInicialEvento As New DateTime Dim dataFinalEvento As New DateTime Dim diferencaSegundos As Integer Dim segundosARetirar As Integer Dim duracaoMidia As Integer Dim stringDuracaoMidia As String() Dim formatos As New System.Collections.Specialized.StringCollection ' uma lista com os formatos de mídia que o windows media player consegue reproduzir formatos.Add("wmv") formatos.Add("avi") formatos.Add("mp4") formatos.Add("jpg") formatos.Add("png") formatos.Add("gif") Do If (IsNothing(xmlAgenda) = False) Then agenda = xmlAgenda For Each evento As XElement In agenda.Element("requisicao").Elements("evento") Try dataInicialEvento = CDate(evento.Element("dataInicial").Value) dataFinalEvento = CDate(evento.Element("dataFinal").Value) Catch e As Exception MsgBox("Erro ao verificar a data do evento: " + vbCrLf + e.Message) Exit For End Try If (dataInicialEvento <= DateTime.Now And dataFinalEvento >= DateTime.Now) Then For Each sequencia As XElement In evento.Elements("sequencia") For Each midia As XElement In sequencia.Elements("midia") If (File.Exists(config("pastaArquivosLocais") + midia.Element("nomeOriginal").Value) = True) Then If (formatos.Contains(midia.Element("extensaoArquivo").Value)) Then stringDuracaoMidia = midia.Element("duracao").Value.Split(":") duracaoMidia = CInt(stringDuracaoMidia(0) * 60 * 60) + CInt(stringDuracaoMidia(1) * 60) + CInt(stringDuracaoMidia(2)) ' calculo para parar o vídeo no fim da campanha diferencaSegundos = DateDiff("s", DateTime.Now, dataFinalEvento) If (diferencaSegundos > 0) Then If (diferencaSegundos > duracaoMidia) Then segundosARetirar = 0 Else segundosARetirar = duracaoMidia - segundosARetirar End If End If If (diferencaSegundos > 0) Then MsgBox("vou dar play na mídia por " + CStr((duracaoMidia) - (segundosARetirar)) + " segundos") AxWindowsMediaPlayer1.URL = config("pastaArquivosLocais") + midia.Element("nomeOriginal").Value Thread.Sleep((duracaoMidia * 1000) - (segundosARetirar * 1000)) Else MsgBox("deu pau nessa porra") Exit For End If Else MsgBox("Não quero tocar arquivos com o formato " + midia.Element("extensaoArquivo").Value) End If Else MsgBox("O arquivo " + config("pastaArquivosLocais") + midia.Element("nomeOriginal").Value + " não existe") End If Next Next End If Next End If Loop End Sub
Ja virei, remexi, testei, mas não achei o problema, que ainda persiste.
Espero que possam me ajudar.
Grato desde já.
Respostas
-
Boa Noite,
Como não tivemos respostas estou finalizando o Topico que tem + de 6 meses.
Qualquer duvida estamos a disposição.
Att,
Luiz Henrique Lima Campos
Microsoft MVP,MCT,MCC,MCDST,MCSA,MCSA+M,MCTS e MCITP
Moderador no Microsoft Community e TechNet Forums e Membro do TechNet Wiki Community Council
Visite o meu blog: http://luizhenriquelima.wordpress.com
Me siga no twitter: @luizlima
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**- Sugerido como Resposta Luiz Henrique Lima Campos [MVP]MVP, Moderator segunda-feira, 2 de setembro de 2013 23:54
- Marcado como Resposta Luiz Henrique Lima Campos [MVP]MVP, Moderator segunda-feira, 2 de setembro de 2013 23:54