လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Pack () function ကို အသုံးပြု. စံ WAV အသံဖိုင်များကိုဘယ်လိုထုတ်လုပ်နိုင်မလဲ။

Pack () function ကို အသုံးပြု. စံ WAV အသံဖိုင်များကိုဘယ်လိုထုတ်လုပ်နိုင်မလဲ။

M66 2025-06-12

Audio Programming တွင် Standard WAV ဖိုင်ခေါင်းစဉ်များထုတ်လုပ်ခြင်းသည်အခြေခံဖြစ်သော်လည်းအရေးပါသောခြေလှမ်းတစ်ခုဖြစ်သည်။ WAV ဖိုင်များသည် Riff (Resource Interchange file format) format ကို အခြေခံ. အသံဖိုင်များဖြစ်သည်, ရှင်းလင်းသောဖွဲ့စည်းပုံနှင့်ဖတ်ရန်လွယ်ကူသည်။ ဤဆောင်းပါးသည် PHP ၏ POSP ၏ pack () function မှတဆင့်တရားဝင် WAV File header ကိုကိုယ်တိုင်တည်ဆောက်လိမ့်မည်။

WAV ဖိုင်များ၏အခြေခံဖွဲ့စည်းပုံ

ပုံမှန် WAV ဖိုင် header ကိုအကြမ်းအားဖြင့်အောက်ပါအစိတ်အပိုင်းများအဖြစ်ခွဲခြားနိုင်သည်။

  1. Riff Block : tag file တစ်ခုသည် riff file တစ်ခုဖြစ်သည်။

  2. Wave အလံ - ဖိုင်အမျိုးအစားသည်လှိုင်းဖြစ်သည်။

  3. FMT Sub-block : အသံဖိုင်အမျိုးအစားအချက်အလက်များ (နမူနာနှုန်း, Channel Number Numbate, Bit Rate စသည်) ပါ 0 င်သည်။

  4. ဒေတာလုပ်ငန်းခွဲ - အမှန်တကယ်အသံအချက်အလက်များပါ 0 င်သည်။

ဖွဲ့စည်းပုံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 | ChunkID | ChunkSize | Format |
|--------|-----------|--------|
| 'RIFF' | 36 + SubChunk2Size | 'WAVE' |

| Subchunk1ID | Subchunk1Size | AudioFormat | NumChannels | SampleRate | ByteRate | BlockAlign | BitsPerSample |
|-------------|----------------|-------------|-------------|------------|----------|-------------|----------------|

| Subchunk2ID | Subchunk2Size | Data |

WAV header ကိုတည်ဆောက်ရန် Pack () ကို သုံးပါ

PHP's Pack () function သည်အချက်အလက်များကို binary strings များထဲသို့ဒေတာများထဲသို့ထည့်သွင်းနိုင်သည်။ ၎င်းသည် WAV ဖိုင်ခေါင်းစဉ်များဆောက်လုပ်ရန်အတွက်သင့်တော်သည်။ 16-bit, mono, 44.1Khz wav ဖိုင် header ကိုထုတ်လုပ်ရန်အတွက်ရိုးရှင်းသောဥပမာသည် Audio data အရွယ်အစားကို ဒေါ်လာ datasize bytes ဖြစ်သည်ဟုယူဆရန်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

 <?php

function createWavHeader($dataSize, $sampleRate = 44100, $bitsPerSample = 16, $channels = 1)
{
    $byteRate = $sampleRate * $channels * $bitsPerSample / 8;
    $blockAlign = $channels * $bitsPerSample / 8;
    $header = '';

    // RIFF Header
    $header .= pack('A4', 'RIFF');                              // ChunkID
    $header .= pack('V', 36 + $dataSize);                       // ChunkSize
    $header .= pack('A4', 'WAVE');                              // Format

    // fmt Subchunk
    $header .= pack('A4', 'fmt ');                              // Subchunk1ID
    $header .= pack('V', 16);                                   // Subchunk1Size
    $header .= pack('v', 1);                                    // AudioFormat (1 = PCM)
    $header .= pack('v', $channels);                            // NumChannels
    $header .= pack('V', $sampleRate);                          // SampleRate
    $header .= pack('V', $byteRate);                            // ByteRate
    $header .= pack('v', $blockAlign);                          // BlockAlign
    $header .= pack('v', $bitsPerSample);                       // BitsPerSample

    // data Subchunk
    $header .= pack('A4', 'data');                              // Subchunk2ID
    $header .= pack('V', $dataSize);                            // Subchunk2Size

    return $header;
}

// နမူနာ:ဗလာတစ်ခုရေးပါ WAV စာချုပ်စာတမ်း
$dataSize = 44100 * 2 * 1; // 1စက္ကန့်ပိုင်းအတွင်း mono16bit audio data
$header = createWavHeader($dataSize);
file_put_contents('output.wav', $header . str_repeat("\x00", $dataSize));

echo "WAV စာချုပ်စာတမ်း已创建。ရရှိနိုင် m66.net 下载测试စာချုပ်စာတမ်း。";

parameter သည်ဖော်ပြချက်

  • $ samplate : နမူနာနှုန်း, ဘုံတန်ဖိုးများမှာ 44100, 48000,

  • $ bitsperspare - နမူနာတစ်ခုစီ၏အတိမ်အနက်ကိုအများအားဖြင့် 8 သို့မဟုတ် 16 ။

  • $ လိုင်းများ - လိုင်းအရေအတွက် 1 ခု, 1 သည် Mono, 2 သည်စတီရီယိုဖြစ်သည်။

  • $ datasize - အသံအချက်အလက်များ၏အမှန်တကယ်အရေအတွက် - စက္ကန့် * နမူနာနှုန်း * နမူနာနှုန်း * channel * channel * bit depth / 8

လျှောက်လွှာဇာတ်လမ်းတစ်ပုဒ်

Pack () ကို အသုံးပြု. WAV ဖိုင်ခေါင်းစဉ်များတည်ဆောက်ခြင်းသည်အောက်ပါအခြေအနေများတွင်အသုံးပြုရန်အကောင်းဆုံးဖြစ်သည်။

  • dynamicy server ဘက်မှအသံလွှင့်ဌာနများထုတ်ပေးသည်။

  • စိတ်ကြိုက်အသံဖမ်းခြင်းပုံစံကိုတင်ပို့ပါ။

  • ဒေတာချုံ့ခြင်းနှင့်အသံထုပ်ပိုးခွဲခြမ်းစိတ်ဖြာကိရိယာများဖွံ့ဖြိုးတိုးတက်ရေး။

အကျဉ်းချုပ်