Private Declare Function MPGE_initializeWork Lib "gogo.dll" Alias "MPGE_initializeWorkVB" () As Long Private Declare Function MPGE_setConfigureStrings Lib "gogo.dll" Alias "MPGE_setConfigureVB" _ (ByVal mode As Long, ByVal dwPara1 As Long, ByVal dwPara2 As String) As Long Private Declare Function MPGE_setConfigureLong Lib "gogo.dll" Alias "MPGE_setConfigureVB" _ (ByVal mode As Long, ByVal dwPara1 As Long, ByVal dwPara2 As Long) As Long Private Declare Function MPGE_getConfigure Lib "gogo.dll" Alias "MPGE_getConfigureVB" _ (ByVal mode As Long, dwParam As Long) As Long Private Declare Function MPGE_detectConfigure Lib "gogo.dll" Alias "MPGE_detectConfigureVB" () As Long Private Declare Function MPGE_processFrame Lib "gogo.dll" Alias "MPGE_processFrameVB" () As Long Private Declare Function MPGE_closeCoder Lib "gogo.dll" Alias "MPGE_closeCoderVB" () As Long Private Declare Function MPGE_endCoder Lib "gogo.dll" Alias "MPGE_endCoderVB" () As Long Private Declare Function MPGE_getVersion Lib "gogo.dll" Alias "MPGE_getVersionVB" _ (vercode As Long, ByVal verstring As String) As Long Private Declare Function MPGE_getUnitStates Lib "gogo.dll" Alias "MPGE_getUnitStatesVB" (nUnitCode As Long) As Long Private Const ME_NOERR = 0 'return normally;正常終了 Private Const ME_EMPTYSTREAM = 1 'stream becomes empty;ストリームが最後に達した Private Const ME_HALTED = 2 'stopped by user;(ユーザーの手により)中断された Private Const ME_INTERNALERROR = 10 'internal error; 内部エラー Private Const ME_PARAMERROR = 11 'parameters error;設定でパラメーターエラー Private Const ME_NOFPU = 12 'no FPU;FPUを装着していない!! Private Const ME_INFILE_NOFOUND = 13 'can't open input file;入力ファイルを正しく開けない Private Const ME_OUTFILE_NOFOUND = 14 'can't open output file;出力ファイルを正しく開けない Private Const ME_FREQERROR = 15 'frequency is not good;入出力周波数が正しくない Private Const ME_BITRATEERROR = 16 'bitrate is not good;出力ビットレートが正しくない Private Const ME_WAVETYPE_ERR = 17 'WAV format is not good;ウェーブタイプが正しくない Private Const ME_CANNOT_SEEK = 18 'can't seek;正しくシーク出来ない Private Const ME_BITRATE_ERR = 19 'only for compatibility;ビットレート設定が正しくない Private Const ME_BADMODEORLAYER = 20 'mode/layer not good;モード・レイヤの設定異常 Private Const ME_NOMEMORY = 21 'fail to allocate memory;メモリアローケーション失敗 Private Const ME_CANNOT_SET_SCOPE = 22 'thread error;スレッド属性エラー(pthread only) Private Const ME_CANNOT_CREATE_THREAD = 23 'fail to create thear;スレッド生成エラー Private Const ME_WRITEERROR = 24 'lock of capacity of disk;記憶媒体の容量不足 'for INPUT Private Const MC_INPUTFILE = 1 Private Const MC_INPDEV_FILE = 0 'input device is file;入力デバイスはファイル Private Const MC_INPDEV_STDIO = 1 'input device is stdin;入力デバイスは標準入力 Private Const MC_INPDEV_USERFUNC = 2 'defined by user;入力デバイスはユーザー定義 'for OUTPUT ( now stdout is not support ) Private Const MC_OUTPUTFILE = 2 Private Const MC_OUTDEV_FILE = 0 'output device is file;出力デバイスはファイル Private Const MC_OUTDEV_STDOUT = 1 'output device is stdout; 出力デバイスは標準出力 Private Const MC_OUTDEV_USERFUNC = 2 'defined by user;出力デバイスはユーザー定義 Private Const MC_OUTDEV_USERFUNC_WITHVBRTAG = 3 'defined by user;入力デバイスはユーザー定義/VBRタグ書き出し 'エンコードタイプ Private Const MC_ENCODEMODE = 3 Private Const MC_MODE_MONO = 0 'mono;モノラル Private Const MC_MODE_STEREO = 1 'stereo;ステレオ Private Const MC_MODE_JOINT = 2 'joint-stereo;ジョイント Private Const MC_MODE_MSSTEREO = 3 'mid/side stereo;ミッドサイド Private Const MC_MODE_DUALCHANNEL = 4 'dual channel;デュアルチャネル 'ビットレート設定 Private Const MG_BITRATE = 4 'bitrate;ビットレート '32,40,48,56,64,80,96,112,128,160,192,224,256,320 '出力で用いるサンプル周波数の強制指定 Private Const MC_OUTFREQ = 6 Private Const MG_COUNT_FRAME = 15 'amount of frame 'VBRタイプの設定 Private Const MC_VBR = 18 '-------------------------------------------------------------------- Private Sub Command1_Click() Dim strWavFileName As String Dim strMp3FileName As String Dim lngWin32ApiResultCode As Long Dim lngTotalFrame As Long Dim lngCurrentFrame As Long Dim lngUnitCode As Long Dim lngVersion As Long Dim strVersion As String * 255 On Error Resume Next 'バージョン情報の取得 lngWin32ApiResultCode = MPGE_getVersion(lngVersion, strVersion) If lngWin32ApiResultCode = 0 Then Debug.Print Left$(strVersion, InStr(1, strVersion, Chr(0)) - 1) End If 'DLLの初期化 lngWin32ApiResultCode = MPGE_initializeWork If lngWin32ApiResultCode <> ME_NOERR Then Exit Sub Call MPGE_getUnitStates(lngUnitCode) Debug.Print CStr(lngUnitCode) strWavFileName = "d:\test\test.wav" strMp3FileName = "d:\test\test.mp3" '入力デバイスの指定 Call MPGE_setConfigureStrings(MC_INPUTFILE, MC_INPDEV_FILE, strWavFileName) '出力デバイスの指定 Call MPGE_setConfigureStrings(MC_OUTPUTFILE, MC_OUTDEV_FILE, strMp3FileName) 'サンプル周波数 Call MPGE_setConfigureLong(MC_OUTFREQ, 44100, 0) 'エンコードタイプ Call MPGE_setConfigureLong(MC_ENCODEMODE, MC_MODE_JOINT, 0) 'ビットレート Call MPGE_setConfigureLong(MG_BITRATE, 128, 0) 'パラメータ解析 lngWin32ApiResultCode = MPGE_detectConfigure lngCurrentFrame = 0 If lngWin32ApiResultCode = ME_NOERR Then '全フレーム数の取得 Call MPGE_getConfigure(MG_COUNT_FRAME, lngTotalFrame) Debug.Print "0/" & CStr(lngTotalFrame) 'エンコードの開始 Do lngWin32ApiResultCode = MPGE_processFrame lngCurrentFrame = lngCurrentFrame + 1 Debug.Print CStr(lngCurrentFrame) & "/" & CStr(lngTotalFrame) DoEvents '入力ストリームがなくなるかその他エラーが発生するまで繰り返す Loop While lngWin32ApiResultCode = ME_NOERR If lngWin32ApiResultCode <> ME_EMPTYSTREAM Then MsgBox "エラーが発生しました errcode = " & CStr(lngWin32ApiResultCode), vbOKOnly + vbExclamation End If Else If lngWin32ApiResultCode = ME_INFILE_NOFOUND Then MsgBox "入力ファイル[test.wav]を開けませんでした", vbOKOnly + vbExclamation Else MsgBox "解析エラーが発生しました", vbOKOnly + vbExclamation End If End If 'エンコーダーを閉じる Call MPGE_closeCoder 'DLLの終了及び解放 Call MPGE_endCoder End Sub