none
Como identificar o fim do vídeo com directshow? RRS feed

  • Pergunta

  • pessoal eu estou fazendo um programinha onde existe um player embutido, o player apenas starta o vídeo,

    eu uso o directShow para rodar o vídeo o problema é que quero que após o vídeo ser finalizado, ou seja seu tempo de duração acabar, um evento seja carregado. alguém sabe como posso fazer isso?

    o meu código esta desta forma?

     

    public frmPrincipal()
    {
        ...
        carregaVideo(spot); //Chama a função que carrega o video passando a classe que contem a localização do vídeo
    
        atualizaSpot(this,eventsArgs.Empty); //chama a função após terminar a exibição do vídeo       
        ...
    }
    
    
    private void carregaVideo(Spot spot)
     {
           //Verifica existencia do video
           if (File.Exists(spot.Localizacao))
           {
               //Criando instancia do FilterGraph
               graphBuilder = (DirectShowLib.IGraphBuilder)new FilterGraph();
               //Solicita ao Filter graph para selecionar os codecs
               graphBuilder.RenderFile(spot.Localizacao, string.Empty);
           }
           else
               return;
    
           mediaCtrl = (DirectShowLib.IMediaControl)graphBuilder;
           videoWin = (DirectShowLib.IVideoWindow)graphBuilder;
           mediaEvt = (DirectShowLib.IMediaEventEx)graphBuilder;
           mediaPos = (DirectShowLib.IMediaPosition)graphBuilder;
    
           //configura  o IVideoWindow para a exibição no painel
    
           //Passando ao IVideoWindow o Handle do componente que deverá receber o video
           videoWin.put_Owner(panelVideo.Handle);
           //Configura o stilo da janela
           videoWin.put_WindowStyle(WindowStyle.Child | WindowStyle.ClipChildren);
           //Configura o tamanho e posição do video dentro do Panel
           videoWin.SetWindowPosition(0, 0, panelVideo.Width, panelVideo.Height);
           //Torna visivel o video dentro do Panel
           videoWin.put_Visible(OABool.True);
    
           //executa o vídeo
           mediaCtrl.Run();
    }
    

    Obrigado!

     

     

     



    terça-feira, 1 de novembro de 2011 12:13

Todas as Respostas