Verificar la Velocidad de
Fotogramas en un Video
by
Ciberwalter
06/Diciembre/2003 (publicado 07/Dic/2003)
Autor: Walter Mart�nez O. (Ciberwalter)
[email protected]
http://www.geocities.com/gnivel4
ESTE EJEMPLO ES TAN F�CIL, que me da verg�enza pensar que estuve m�s de una semana craneando la idea. Al final result� m�s f�cil de lo esperado. Al ser c�digo abierto pueden usarlo como quieran
por ejemplo en un programa que lea los subt�tulos y los a�ada al video (yo hice uno muy b�sico pero efectivo quiz� en un tiempo m�s lo publique)
Comenzamos con el C�digo:' Comenzamos con el c�digo para abrir el video y cargarlos ' a MediaPlayer1 y a MediaPlayer Private Sub Command1_Click() On Error GoTo mnuFileOpenDialog_Click_Error Dim file As OPENFILENAME, sFile As String, sFileTitle As String, lResult As Long, iDelim As Integer file.lStructSize = Len(file) file.hwndOwner = Me.hWnd file.flags = OFN_HIDEREADONLY + OFN_PATHMUSTEXIST + OFN_FILEMUSTEXIST file.lpstrFile = "Video" & String$(250, 0) file.nMaxFile = 255 file.lpstrFileTitle = String$(255, 0) file.nMaxFileTitle = 255 file.lpstrInitialDir = App.Path file.lpstrFilter = "Videos" & Chr$(0) & "*.MPG;*.AVI;*.MPEG;*.DAT;*.ASF;*.WMV" & Chr$(0) & Chr$(0) file.nFilterIndex = 1 file.lpstrTitle = "Abrir" lResult = GetOpenFileName(file) If lResult <> 0 Then iDelim = InStr(file.lpstrFileTitle, Chr$(0)) If iDelim > 0 Then sFileTitle = Left$(file.lpstrFileTitle, iDelim - 1) End If iDelim = InStr(file.lpstrFile, Chr$(0)) If iDelim > 0 Then sFile = Left$(file.lpstrFile, iDelim - 1) End If Text1 = sFile ' Carga el video seleccionado a los dos reproductores ' MediaPlayer1 y MediaPlayer2 MediaPlayer1.FileName = sFile MediaPlayer2.FileName = sFile Timer1.Enabled = True End If mnuFileOpenDialog_Click_Exit: Exit Sub mnuFileOpenDialog_Click_Error: MsgBox "Error: " & Format$(Err) & " " & Error$, , "mnuFileOpenDialog_Click" Resume mnuFileOpenDialog_Click_Exit End Sub Private Sub Timer1_Timer() ' Y aqu� est� toda la m�gia: ' MediaPlayer1 est� en modo Tiempo (DisplayMode = mpTime) ' MediaPlayer2 est� en modo Fotogramas (DisplayMode = mpFrames) ' Primero verificamos el 'SelectionEnd' de ambos. ' Player1 = MediaPlayer1.SelectionEnd ' Player2 = MediaPlayer2.SelectionEnd ' y hacemos la siguiente divisi�n Player1 / Player2 ' el resultado ser� la Velocidad de los fotogramas If MediaPlayer1.CurrentPosition < 5 Then Player1 = MediaPlayer1.SelectionEnd Player2 = MediaPlayer2.SelectionEnd Total = Player2 / Player1 ' le damos formato para que nos muestre s�lo dos decimales Total = Format(Total, "##.##") End If If MediaPlayer1.CurrentPosition > 5 Then Timer1.Enabled = False MediaPlayer1.Stop() MediaPlayer2.Stop() End If End Sub
Descargar el C�digo y el ejecutable -> (Ciberwalter_FrameRate.zip - 64.1 Kb)