動画のサイズを得るには
動画(aviファイル)の画像の大きさはmci系の命令では取得できません。そこで、ファイルから直接大きさを得る方法を示します。
動 画 フ ァ イ ル の 構 造 |
位置(単位:バイト) |
内容 |
1−4 |
RIFFの文字 |
65−68 |
動画の横サイズ(単位:ピクセル) |
69−72 |
動画の縦サイズ(単位:ピクセル) |
例えばデータが次のようになっているとします。
位置 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
データ(16進) |
40 |
01 |
00 |
00 |
1F |
00 |
00 |
00 |
ここから大きさは、
横:00000140(16進)=320(10進)
縦:0000001F(16進)=240(10進)
(後ろのデータほど上の位になることに注意)
という事になり動画のサイズは320ピクセル×240ピクセルということになります。
サ ン プ ル プ ロ グ ラ ム |
まず、VisualBasicを起動してプロジェクトを新しく作成してください。まず、フォームにコマンドボタンを張りつけ、次のコードを貼り付けて実行してください。
動作確認:Visual Basic 5.0(Visual Basic 4.0でも問題なく動作するはずです),Windows98
Option Explicit Private Sub Command1_Click() Dim file As String Dim buf(8) As Byte Dim s1 As String, s2 As String Dim width As Long, height As Long Dim j As Long file = InputBox("ファイル名を入力してください") Open file For Binary As #1 Get #1, 65, buf Close #1 For j = 0 To 3 s1 = s1 + Hex(buf(3 - j)) s2 = s2 + Hex(buf(7 - j)) Next width = HexTo(s1) height = HexTo(s2) MsgBox Str(width) + "×" + Str(height) End Sub Private Function HexTo(VarHex As String) As Long 'データを16進数から10進数に変換する関数 'Val("&Hxxxx")とは動作が違います Dim i As Long For i = 1 To Len(VarHex) HexTo = HexTo + Val("&H" + Mid(VarHex, i, 1)) * (16 ^ (Len(VarHex) - i)) Next End Function |