AVIファイルを再生するには

AVIファイルとはMicrosoftが提唱した動画保存規格です。WindowsAPIを使用すれば簡単にこのファイルを再生することが可能です。

宣言(準備としてまず次のMciSendStringの宣言を追加します)

Private Declare Function mciSendString Lib "WINMM" Alias "mciSendStringA" (ByVal CMD$, ByVal RET$, ByVal RETLEN&, ByVal HwndBack&) As Long

※Privateは必要に応じて削除またはPublicに変更

使 用 方 法

MCISendString CMD$,RET$,RETLEN&,HwndBack&

引 数 説 明


CMD

String

処理内容。
書式:コマンド名 ファイル名またはAlias名 パラメータ

RET

Long

実行結果をこの変数に入れる(mciGetErrorString使用時に使う)

RETLEN

String

RET$の大きさ

HwndBack

Long(HWND)

ファイルの再生終了などを通知するウィンドウのハンドル。VB5でAddressOfが使用できるようになって使用できるようになった。SetWindowLongを使用しメッセージをフックして使用する。CMDにnotifyが指定されている場合のみ有効。

C M D に 関 す る 追 加 説 明

次のコードをCMD$に代入することで次の機能を追加することができます。

コード 機能 使用頻度
Open File.avi (Alias *******) File.aviというファイルを開く(Aliasとは識別名でこれを指定すれば他のコマンドで、ファイル名ではなく指定した名前で処理を行えます) A
Play File.avi File.aviというファイルを再生(再生する前にOpenを実行) A
Stop File.avi File.aviの再生をストップ A
Close File.avi File.aviというファイルを閉じる(CloseするまえにStopを実行) A
Seek File.avi to start File.aviのまき戻し(繰り返し再生に使用) A
Pause File.avi File.aviの再生の一時停止 B
Status File.avi MODE File.aviの状態(繰り返し再生に使用) *RET$がplayingなら再生中、stoppedなら停止中 B
Window File.avi handle window_handle File.aviをwindow_handleというウィンドウハンドルを持ったウィンドウで再生する(defaultも使える) B

まだまだたくさん命令があるのですが、ここでは説明しきれません。詳しくは「Win32 APIプログラマーズリファレンス」(Visual Basicのプロフェッショナルエディション以上やVisual C++などの開発ソフトに含まれています)などを見てください。

サ ン プ ル プ ロ グ ラ ム

まず、VisualBasicを起動してプロジェクトを新しく作成してください。そしてタイマーを1つ配置してください。そして次のコードを貼り付けてください。このサンプルコードはプログラム実行時に「TEST.AVI」というファイルを再生し、終了時に再生を停止するものです(繰り返し再生機能つき)。なお再生にはc:¥ディレクトリに「TEST.AVI」というファイルが必要になります。あらかじめ用意しておいてください。

動作確認:Visual Basic 5.0(Visual Basic 4.0でも問題なく動作するはずです),Windows98

Private Declare Function mciSendString Lib "WINMM" Alias "mciSendStringA" (ByVal CMD$, ByVal Ret$, ByVal RETLEN&, ByVal HwndBack&) As Long
Private Sub Form_Load()
Dim Ret As String * 255
Dim Ret2 As String * 255
Dim Ret3 As String * 255

Timer1.Interval = 100 'タイマーの設定
mciSendString "open c:\test.avi", Ret, 255, 0 'ファイルを開く
mciSendString "window c:\test.avi handle " + Str(Form1.hWnd), Ret2, 255, 0 'Windowの設定
mciSendString "play c:\test.avi", Ret3, 255, 0 '再生する
End Sub


Private Sub Form_Unload(Cancel As Integer)
Dim Ret As String * 255
Dim Ret2 As String * 255
mciSendString "stop c:\test.avi", Ret, 255, 0 '再生停止
mciSendString "close c:\test.avi", Ret2, 255, 0 'ファイルを閉じる
End Sub

Private Sub Timer1_Timer()
Dim Ret As String * 255
Dim Ret2 As String * 255
Dim Ret3 As String * 255
mciSendString "status c:\test.avi mode", Ret, 255, 0 '再生中?停止中?
Form1.Caption = "AVIファイル再生サンプル モード:" + Ret
If Mid(Ret, 1, 7) = "stopped" Then '停止中なら実行
mciSendString "seek c:\test.avi to start", Ret2, 255, 0 'まき戻し
mciSendString "play c:\test.avi", Ret3, 255, 0 '再び再生
End If
End Sub

本格サンプル(本当か?)「MultiMedia Viewer」ダウンロード(WAV,avi,AVI形式対応)
サンプル2「MultiMedia Format Changer」ダウンロード

備 考

WindowsのバージョンやIEのバージョンにもよりますが、MPEGやRealMediaのようなファイルも再生が可能です。また、動画ファイルの大きさを得たい場合はこちらを参考にしてください。

トップに戻る
Visual Basicワンポイントテクニック目次に戻る

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル