AVIファイルの再生(V) <TOP>
AVIFileOpen
AVIファイルオープン
AVIFileRelease
AVIファイルハンドル解放
AVIFileInfo
AVIファイル情報取得
AVIFileInit
AVIファイル初期化
AVIFileExit
AVIファイルライブラリ解放
mciSendString
文字列をMCIに送信
mciGetErrorString
MCIエラーコードを記述する文字列を取得
mciExecute
MCIにアクセス
AVIのサイズを取得し、スクリーン座標(100,100)の位置に、指定したスピードで再生します。
'================================================================ '= AVIファイルの再生(V)
'= (mciExecute.bas) '================================================================ #include "Windows.bi" Type AVIFILEINFO dwMaxBytesPerSec As Long 'ファイルのデータレートのほぼ最大値 dwFlags As Long '拡張可能なフラグ dwCaps As Long '適応フラグ dwStreams As Long 'ファイル中のストリーム数 dwSuggestedBufferSize As Long '読み込み時に必要となる予想されるバッファサイズ(バイト) dwWidth As Long 'AVIファイル中の幅(ピクセル) dwHeight As Long 'AVIファイル中の高さ(ピクセル) dwScale As Long '全ファイルに適応できるタイムスケール dwRate As Long '(dwRate÷dwScale)は秒間サンプル数 dwLength As Long 'AVIファイルサイズ。単位は(dwRate÷dwScale) dwEditCount As Long 'AVIファイルに追加、またはAVIファイルから削除されたストリームの数 szFileType As String * 64 'ファイルタイプ情報の記述を含む、Nullで終わる文字列 End Type ' AVIファイルオープン Declare Function Api_AVIFileOpen& Lib "avifil32" Alias "AVIFileOpenA" (ppFile&, ByVal szFile$, ByVal Mode&, pclsidHandler As Any) ' AVIファイルハンドル解放 Declare Function Api_AVIFileRelease& Lib "avifil32" Alias "AVIFileRelease" (ByVal pFile&) ' AVIファイル情報取得 Declare Function Api_AVIFileInfo& Lib "avifil32" Alias "AVIFileInfoA" (ByVal pFile&, pfi As AVIFILEINFO, ByVal lSize&) ' AVIファイル初期化 Declare Sub Api_AVIFileInit Lib "avifil32" Alias "AVIFileInit" () ' AVIファイルライブラリ解放 Declare Sub Api_AVIFileExit Lib "avifil32" Alias "AVIFileExit" () ' MCIにアクセス Declare Function Api_mciExecute& Lib "winmm" Alias "mciExecute" (ByVal lpstrCommand$) #define OF_SHARE_DENY_WRITE &H20 '他のプロセスから書き込み可能 Var Shared sAVIFile As String Var Shared AviInfo As AVIFILEINFO Var Shared aviWidth As Long Var Shared aviHeight As Long Var Shared Text1 As Object Var Shared Edit1 As Object Text1.Attach GetDlgItem("Text1") Edit1.Attach GetDlgItem("Edit1") '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hFile As Long sAVIFile = WinOpEndlg("ファイルのオープン", "*.avi", "aviファイル(*.avi)", 0) If sAVIFile <> Chr$(&H1B) Then Text1.SetWindowText sAVIFile 'AVIファイル初期化 Api_AVIFileInit 'AVIファイルハンドル取得 Ret = Api_AVIFileOpen(hFile, sAVIFile, OF_SHARE_DENY_WRITE, ByVal 0) If Ret = 0 Then 'AVIインフォメーション検索 Ret = Api_AVIFileInfo(hFile, AviInfo, Len(AviInfo)) 'AVIファイルのサイズを取得 If Ret = 0 Then aviWidth = AviInfo.dwWidth aviHeight = AviInfo.dwHeight End If 'AVIファイルハンドル解放 Ret = Api_AVIFileRelease(hFile) Else A% = MessageBox("", "AVIファイルオープンエラー", 0, 2) End If Api_AVIFileExit Else sAVIFile = "" Text1.SetWindowText sAVIFile End If End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Spd As Integer Var Ret As Long If sAVIFILE = "" Then Exit Sub Spd = Val(Edit1.GetWindowText) If Spd < 1 Or Spd > 10 Then Spd = 5 : Edit1.SetWindowText Trim$(Str$(Spd)) 'AVIファイルを開く Ret = Api_mciExecute("Open " & sAVIFile & " Type AviVideo Alias tokovideo Style Popup") 'ディスプレイウィンドウを(100,100)の位置に設定 Ret = Api_mciExecute("Put tokovideo Window At 100 100 " & Trim$(Str$(aviWidth)) & " " & Trim$(Str$(aviHeight))) '再生スピードをSpd倍に Ret = Api_mciExecute("Set tokovideo Speed " & Trim$(Str$(Spd * 1000))) 'AVIの再生 Ret = Api_mciExecute("Play tokovideo Wait") 'メモリークローズ Ret = Api_mciExecute("Close tokovideo") End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End