動画のサイズを得るには

動画(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

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

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル