Foros del Web » Programación para mayores de 30 ;) » .NET »

DirectShow

Estas en el tema de DirectShow en el foro de .NET en Foros del Web. Quise colocar este post en faq's del foro, pero primero prefiero que lo revisen si vale la pena. Al grano... En mi búsqueda de reproducir ...
  #1 (permalink)  
Antiguo 15/07/2008, 14:25
 
Fecha de Ingreso: junio-2007
Mensajes: 44
Antigüedad: 16 años, 10 meses
Puntos: 0
DirectShow

Quise colocar este post en faq's del foro, pero primero prefiero que lo revisen si vale la pena. Al grano... En mi búsqueda de reproducir sonido sin la necesidad de Windows Media player u otro ocx, me encontre con DirectShow, pero hay muy pocos ejemplos en español. También he visto que no es demasiado recomendable, pero para alguién que quiera reproducir algo sin mucho esfuerzo, es muy bueno. En está página encontre el código de donde base mi ejemplo:

DirectShow. El ejemplo de la página está en Visual Basic 6. Es importante mencionar que la funcionalidad se encuentra desde directX8 en adelante.

Ejemplo Direct Show, Visual Basic .Net 2005:

Lo primero es hacer referencia al proyecto a "QUARTZ.DLL", puedes buscarlo y traspasarlo a tu carpeta de proyecto si deseas.
Elementos del formulario:
1.- Un Opendialog=>opd
2.- Tres Button's=>abrir, play, stop
3.- Un Textbox,Nombre del Archivo abierto=>text1


Código PHP:
Imports QuartzTypeLib

Public Class MyForm
    
Private auba As IBasicAudio //Audio Básico
    
Private vidba As IBasicVideo //Video Básico, no ocupado
    
Private evmu As IMediaEvent //Evento multimedia, este aún no le he probado como funciona.
    
Private winvi As IVideoWindow //Video de windows, no lo ocupare en el ejemplo
    
Private mulco As IMediaControl //Control multimedia, este es el importante
    
Private posmu As IMediaPosition //Posición multimedia
    
Private InPlay as Boolean False//Controlamos si está en reproducción actualmente.
    //Ocupamos esta función para cargar nuestro archivo a los elementos
    //Es importante siempre colocar todo en Try para evitar caidas en la carga
    
Protected Sub Load_File(FileName as string)
        Try
            
mulco = New FilgraphManager//Inicializa el elemento
            
mulco.RenderFile(FileName)//Cargar Archivo
            
auba mulco
            auba
.balance=0//Corresponde al valor medio. Valor Máximo 10.000, valor mínimo -10.000
            
auba.Volume=0//Valor máximo del volumen, el valor mínimo es -10.000
            
evmu mulco
            posmu 
mulco
            posmu
.Rate 1//Reproducción hacia adelante en forma normal, no he visto otros valores
            
posmu.CurrentPosition=0//Posición en que se encuantra la reproducción
        
Catch ex As Exception
            Colocar cualquier sentencia que controle el error
.
        
End Try
    
End Sub
    
    
Private Sub Clear_Object()
        Try
            
//En caso de que este en ejecución este Control
            
If Not mulco Is Nothing Then
                mulco
.Stop()
            
End If
            
//Dejo esta sentencia para que no se olviden de cerrarlo cuando van a querer cargar un video
            
If Not winvi Is Nothing Then
                winvi
.Owner 0
            End Id
            auba 
Nothing
            vidba 
Nothing
            evmu 
Nothing
            winvi  
Nothing
            mulco 
Nothing
            posmu 
Nothing
            InPlay 
False
        
Catch ex As Exeception
            
//Sentencia de Error
        
End Try
    
End Sub

    
Private Sub abrir_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles abrir.Click
        
If opd.ShowDialog Windows.Forms.DialogResult.OK Then
            Clear_Object
()//Limpiamos
            
text1.Text opd.FileName//Guardamos el Nombre
            
Load_File(text1.Text)//Cargamos información
        
End If
    
End Sub

    
//Ponemos en marcha la reproducción
    
Private Sub play_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles play.Click
        
If text1.text "" or mc Is Nothing Then//Control para que no tengamos error al no tener archivo cargado
            
MsgBox ("No hay archivo Cargado")
        
End If
        If 
InPlay Then
            posmu
.CurrentPosition 0
        End 
If
        
mulco.Run()
        
InPlay True
    End Sub

    
//Detenemos la Reproducción
    
Private Sub stop_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles stop.Click
        mulco
.Stop()
        
posmu.CurrentPosition=0
        InPlay 
False
    End Sub
End 
Class 
Puede que el ejemplo de errores, pero son minimos.
Esperando que a alguien le sea de utilidad muchas gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:02.