für alle, die schon immer mal wissen wollten, wie man die WinGrabEngine.dll von Elminster in VB(.NET) anspricht und vor allem, wie man das CallBack Interface benutzt, hier eine kleine Anleitung. Mein Dank gilt flagg und Co. für die ngrab-sourcen im cvs.
- Die WinGrabEngine.dll dem System bekannt machen: "regsvr32 WinGrabEngine.dll"
- Über "Projekt/Verweis hinzufügen" die WinGrabEngine.dll auswählen
- Damit man die Log-Ausgaben erhält, muß man die -Ex Funktionen nehmen
- Die WinGrabEngine.dll enthält folgende Funktionen:
Code: Alles auswählen
Public Function StartDirectGrabEx(ByVal aIP As String, ByVal aVideoPID As Integer, ByVal aAudioPIDs As Object, ByVal aVideoFileName As String, ByVal aAudioFileNames As Object, ByVal aStripVideoPes As Boolean, ByVal aStripAudioPes As Object, Optional ByVal aCallback As WinGrabEngine.IWinGrabProcessCallback) As WinGrabEngine.WinGrabGrabControl
Public Function StartDirectGrab(ByVal aIP As String, ByVal aVideoPID As Integer, ByVal aAudioPIDs As Object, ByVal aVideoFileName As String, ByVal aAudioFileNames As Object, ByVal aStripVideoPes As Boolean, ByVal aStripAudioPes As Object) As Object
Public Function StartMuxEx(ByVal aVideoFileName As String, ByVal aVideoStartOffset As Integer, ByVal aVideoEndOffset As Integer, ByVal aAudioFileNames As Object, ByVal aMuxFileName As String, ByVal aSplittSize As Integer, ByVal aCallback As WinGrabEngine.IWinGrabProcessCallback) As WinGrabEngine.WinGrabGrabControl
Public Function StartMuxGrabEx(ByVal aIP As String, ByVal aVideoPID As Integer, ByVal aAudioPIDs As Object, ByVal aMuxFileName As String, ByVal aSplittSize As Integer, Optional ByVal aCallback As WinGrabEngine.IWinGrabProcessCallback) As WinGrabEngine.WinGrabGrabControl
Public Function StartMuxGrab(ByVal aIP As String, ByVal aVideoPID As Integer, ByVal aAudioPIDs As Object, ByVal aMuxFileName As String, ByVal aSplittSize As Integer) As Object
Public Function StartMux(ByVal aVideoFileName As String, ByVal aVideoStartOffset As Integer, ByVal aVideoEndOffset As Integer, ByVal aAudioFileNames As Object, ByVal aMuxFileName As String, ByVal aSplittSize As Integer) As Object
Mit folgendem Code kann man nun die WinGrabEngine.dll ansprechen:
Getestet mit VB 6.0
Code: Alles auswählen
Implements IWinGrabProcessCallback
Public WinGrabLibrary As Object
Public WinGrabGrabControl As Object
Private Sub Form_Load()
Dim video As String
Dim audio(3) As String
video = "C:\Recording\Kabel_00.vpes"
audio(0) = "C:\Recording\Kabel_01.apes"
audio(1) = "C:\Recording\Kabel_02.apes"
'z.B. zwei PES-Streams (udrec -pes) zu einem PS-Stream muxen
Set WinGrabLibrary = CreateObject("WinGrabEngine.WinGrabLibrary")
Set WinGrabGrabControl = WinGrabLibrary.StartMuxEx(video, -1, -1, audio, "C:\Recording\Kabel.mpg", 0, Me)
End Sub
Public Sub IWinGrabProcessCallback_OnMessage(ByVal sMessage As String)
'Log-Ausgabe (sMessage) wird als String übergeben
End Sub
Public Sub IWinGrabProcessCallback_OnStateChange(ByVal sName As String, ByVal sState As String)
'Status-Informationen (z.B. "Muxer" sName, "SCR: 00:00:00.480 Syncs: 1" sState) werden jeweils als String übergeben
End Sub
Getestet mit VB.NET
Code: Alles auswählen
Public Class WinGrabEngine_Class
Implements WinGrabEngine.IWinGrabProcessCallback
Public WinGrabLibrary As Object
Public WinGrabGrabControl As Object
Public Sub IWinGrabProcessCallback_OnMessage(ByVal sMessage As String) Implements WinGrabEngine.IWinGrabProcessCallback.OnMessage
'Log-Ausgabe (sMessage) wird als String übergeben
End Sub
Public Sub IWinGrabProcessCallback_OnStateChange(ByVal sName As String, ByVal sState As String) Implements WinGrabEngine.IWinGrabProcessCallback.OnStateChange
'Status-Informationen (z.B. "Muxer" sName, "SCR: 00:00:00.480 Syncs: 1" sState) werden jeweils als String übergeben
End Sub
Shared Sub Main()
Dim StartMux As New WinGrabEngine_Class()
Dim video As String
Dim audio(3) As String
video = "C:\Recording\Kabel_00.vpes"
audio(0) = "C:\Recording\Kabel_01.apes"
audio(1) = "C:\Recording\Kabel_02.apes"
'z.B. zwei PES-Streams (udrec -pes) zu einem PS-Stream muxen
StartMux.WinGrabLibrary = CreateObject("WinGrabEngine.WinGrabLibrary")
StartMux.WinGrabGrabControl = StartMux.WinGrabLibrary.StartMuxEx(video, -1, -1, audio, "C:\Recording\Kabel.mpg", 0, StartMux)
End Sub
End Class