در قسمت قبلی (PHP: آموزش کار با فایل‌های صوتی؛ بخش اول - آشنایی با ساختار WAV) ساختار فایل WAV به دقت مورد بررسی قرار گرفت. برای خواندن اطلاعات مربوط به header از فایل WAV باید با در نظر داشتن offset و size هر فیلد مقادیر تک تک فیلد‌ها را از فایل WAV بیرون کشیده و مورد پردازش قرار دهیم.

$filename = 'sample.wav';
$handle = fopen($filename, "r");
// wav file header retrieval
$heading['riff']['chunk_id'] = fread($handle, 4); // Chunk ID
$heading['riff']['chunk_size'] = bin2hex(fread($handle, 4)); // Chunk size
$heading['riff']['format'] = fread($handle, 4); // Format
$heading['fmt']['subchunk1_id'] = fread($handle, 4); // Subchunk1 ID
$heading['fmt']['subchunk1_size'] = bin2hex(fread($handle, 4)); // Subchunk1 size
$heading['fmt']['audio_format'] = bin2hex(fread($handle, 2)); // Audio format
$heading['fmt']['num_channels'] = bin2hex(fread($handle, 2)); // Num channels
$heading['fmt']['sample_rate'] = bin2hex(fread($handle, 4)); // Sample rate
$heading['fmt']['byte_rate'] = bin2hex(fread($handle, 4)); // Byte rate
$heading['fmt']['block_align'] = bin2hex(fread($handle, 2)); // Block align
$heading['fmt']['bit_per_sample'] = bin2hex(fread($handle, 2)); // Bits per sample
$heading['data']['subchunk2_id'] = fread($handle, 4); // Subchunk2 ID
$heading['data']['subchunk2_size'] = bin2hex(fread($handle, 4)); // Subchunk2 size

توجه: تابع fread به تعداد پارامتر دوم از فایل مورد نظر بایت (8-بیت) می‌خواند.

توجه: مقدار خوانده شده از فایل اطلاعات باینری است و با توجه به اطلاعات مطلب قبلی باید به عدد هگز تبدیل شود و سپس با توجه به endian آن به عدد صحیح تبدیل گردد.

برچسب ها: 

افزودن نظر جدید