■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#28025-0wavファイルのサンプリングレートなどの取得pasm2000-08-16(水) 13:29
     #28029-0RE#28025:wavファイルのサンプリングレートなどの取得魔界の仮面弁士2000-08-16(水) 13:52
     #28028-0RE#28025:wavファイルのサンプリングレートなどの取得せつら2000-08-16(水) 13:52
#28025-0
wavファイルのサンプリングレートなどの取得
wavファイルからサンプリングレート、ビット数、チャンネル数などを取得したいのですが
どうすればいいのでしょうか。
よろしくお願いします。
#28029-0
RE#28025:wavファイルのサンプリングレートなどの取得
> wavファイルからサンプリングレート、ビット数、チャンネル数などを取得したいのですが
> どうすればいいのでしょうか。

手抜きサンプルです。(^^;
エラー処理等は省略してあります。

'-------- Form1
Option Explicit

Private Sub Form_Load()
    Dim Ret As WAVEFORMATEX
    
    Ret = GetWAVEFormat("C:\WINDOWS\MEDIA\TADA.WAV")
    
    Debug.Print "サンプリングレート:", Ret.lSamplesPerSec; "Hz"
    Debug.Print "サンプリングビット数:", Ret.nBitsPerSample; "bit"
    Debug.Print "チャンネル数:", Ret.nChannels
End Sub


'--------- Module1
Option Explicit

Public Type WAVEFORMATEX
    lAvgBytesPerSec As Long
    lExtra As Long
    lSamplesPerSec As Long
    nBitsPerSample As Integer
    nBlockAlign As Integer
    nChannels As Integer
    nFormatTag As Integer
    nSize As Integer
End Type

Private Type FileHeader
    lRiff As Long
    lFileSize As Long
    lWave As Long
    lFormat As Long
    lFormatLength As Long
End Type

Private Type WaveFormat
    wFormatTag As Integer
    nChannels As Integer
    nSamplesPerSec As Long
    nAvgBytesPerSec As Long
    nBlockAlign As Integer
    wBitsPerSample As Integer
End Type

Private Type ChunkHeader
    lType As Long
    lLen As Long
End Type

Private lDataLength As Long

Public Function GetWAVEFormat(FileName As String) As WAVEFORMATEX
    Const RIFF_STRING = &H46464952
    Const WAVE_STRING = &H45564157
    Const data_STRING = &H61746164
    Dim FNo As Long
    Dim Header As FileHeader
    Dim HdrFormat As WaveFormat
    Dim chunk As ChunkHeader
    Dim by As Byte
    Dim i As Long
    
    FNo = FreeFile
    Open FileName For Binary Access Read As #FNo
    Get #FNo, , Header
 
    If Header.lRiff = RIFF_STRING And _
       Header.lWave = WAVE_STRING And _
       Header.lFormatLength >= 16 Then
    
        Get #FNo, , HdrFormat
        For i = 1 To Header.lFormatLength - 16
            Get #FNo, , by
        Next
 
        Get #FNo, , chunk
        Do Until chunk.lType = data_STRING
            For i = 1 To chunk.lLen
                Get #FNo, , by
            Next
            Get #FNo, , chunk
        Loop
 
       lDataLength = chunk.lLen
 
        With GetWAVEFormat
            .lAvgBytesPerSec = HdrFormat.nAvgBytesPerSec
            .lExtra = 0
            .lSamplesPerSec = HdrFormat.nSamplesPerSec
            .nBitsPerSample = HdrFormat.wBitsPerSample
            .nBlockAlign = HdrFormat.nBlockAlign
            .nChannels = HdrFormat.nChannels
            .nFormatTag = HdrFormat.wFormatTag
        End With
    End If
    Close #FNo
End Function
#28028-0
RE#28025:wavファイルのサンプリングレートなどの取得
全部英語ですが、以下のページで WAV ファイルフォーマットを調べれば、その詳細構造ドキュメントが
見つかります。

http://www.wotsit.org/

後は、バイナリモードでオープンして、仕様通りの構造から目的の情報を直接取り出しましょう。
このページと関連する記事:
#25088-0ファイル詳細情報の表示について2000-07-06(木) 14:43
#33636-0WAVの録音時間2000-11-17(金) 12:04
#1223-2waveファイルのデータ取得と波形の表示2001-11-08(木) 09:33
#14823-0waveファイルの最初から最後までの再生時間を取得したいのですが、2001-03-02(金) 17:37
#19776-0waveファイルの再生2001-03-25(日) 07:30
#38987-0ネットワーク上におけるマシン名の取得について2001-02-16(金) 16:49
#573-1モノクロ画像の色調変更2002-05-28(火) 06:00
#32554-0画像処理について2000-10-30(月) 11:29
#884-0BIOS情報が取得できない2001-11-01(木) 22:06
#884-1BIOS情報が取得できない2001-11-01(木) 13:06
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)