假设目录结构如下
其中ffmpeg*.dll包含在“FFmpeg for Delphi”帖子的附件里
复制内容到剪贴板
代码:
C:\CCAVCDemoVB\CCAVC.dll
C:\CCAVCDemoVB\LibAVC\(ffmpeg*.dll)
C:\CCAVCDemoVB\input.mpgAPI 声明模块mCCAVC.bas
复制内容到剪贴板
代码:
Public Declare Function LoadAVLib Lib "C:\CCAVCDemoVB\CCAVC.dll" (ByVal APath As String, ByVal AWithVerNum As Boolean) As Boolean
Public Declare Sub UnloadAVLib Lib "C:\CCAVCDemoVB\CCAVC.dll" ()
Public Declare Function LastErrMsg Lib "C:\CCAVCDemoVB\CCAVC.dll" () As String
Public Declare Function AddInputFile Lib "C:\CCAVCDemoVB\CCAVC.dll" (ByVal AFileName As String, ByVal AOptions As Long) As Long
Public Declare Function SetOutputFile Lib "C:\CCAVCDemoVB\CCAVC.dll" (ByVal AInputIndex As Long, ByVal AFileName As String, ByVal AOptions As Long) As Boolean
Public Declare Sub ClearInputFiles Lib "C:\CCAVCDemoVB\CCAVC.dll" ()
Public Declare Sub RemoveInputFile Lib "C:\CCAVCDemoVB\CCAVC.dll" (ByVal AInputIndex As Long)
Public Declare Sub StartConvert Lib "C:\CCAVCDemoVB\CCAVC.dll" (ByVal AThreadCount As Long)演示代码
模块叫mCCAVC,一个窗体叫Form1,一个按钮叫Command1,一个文本框叫Log
复制内容到剪贴板
代码:
Private Function LoadLibAV() As Boolean
Dim Ret As Boolean
Dim ErrMsg As String
Ret = mCCAVC.LoadAVLib("C:\CCAVCDemoVB\LibAV\", True)
If Ret = False Then
ErrMsg = mCCAVC.LastErrMsg
Log.Text = Log.Text & vbCrLf & ErrMsg
End If
LoadLibAV = Ret
End Function
Private Sub Command1_Click()
Dim Idx As Long
Dim ErrMsg As String
Dim Ret As Boolean
If LoadLibAV = True Then
Call mCCAVC.ClearInputFiles
Idx = mCCAVC.AddInputFile("C:\CCAVCDemoVB\input.mpg", 0)
If Idx < 0 Then
ErrMsg = mCCAVC.LastErrMsg
Log.Text = Log.Text & vbCrLf & ErrMsg
Else
Ret = mCCAVC.SetOutputFile(Idx, "C:\CCAVCDemoVB\output.flv", 0)
If Ret = True Then
Call mCCAVC.StartConvert(0)
Else
ErrMsg = mCCAVC.LastErrMsg
Log.Text = Log.Text & vbCrLf & ErrMsg
mCCAVC.RemoveInputFile Idx
End If
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call mCCAVC.UnloadAVLib
End Sub由于对VB不熟悉,所以,不知道怎么定义Delphi里面的结构体,不知道怎么响应Delphi里的事件。。。。
[
本帖最后由 CodeCoolie 于 2008-5-3 20:31 编辑 ]