AVIファイルを再生するには
AVIファイルとはMicrosoftが提唱した動画保存規格です。WindowsAPIを使用すれば簡単にこのファイルを再生することが可能です。
宣言(準備としてまず次のMciSendStringの宣言を追加します) |
Private Declare Function mciSendString Lib "WINMM" Alias "mciSendStringA" (ByVal CMD$, ByVal RET$, ByVal RETLEN&, ByVal HwndBack&) As Long |
使 用 方 法 |
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のようなファイルも再生が可能です。また、動画ファイルの大きさを得たい場合はこちらを参考にしてください。