Mix audio in android

后端 未结 1 624
执念已碎
执念已碎 2020-12-10 08:19

I tried to follow this link:

http://mobilengineering.blogspot.com/2012/06/audio-mix-and-record-in-android.html?showComment=1369622288028#c2333829870

相关标签:
1条回答
  • 2020-12-10 08:40

    What you're outputting is just the PCM data. A valid WAV file also needs a header:

    Offset    Size  Name           Description
    ------------------------------------------------------------------------
    0         4     ChunkID        Contains the letters "RIFF" in ASCII form
                                   (0x52494646 big-endian form).
    4         4     ChunkSize      36 + SubChunk2Size, or more precisely:
                                   4 + (8 + SubChunk1Size) + (8 + SubChunk2Size)
                                   This is the size of the rest of the chunk 
                                   following this number.  This is the size of the 
                                   entire file in bytes minus 8 bytes for the
                                   two fields not included in this count:
                                   ChunkID and ChunkSize.
    8         4     Format         Contains the letters "WAVE"
                                   (0x57415645 big-endian form).
    
    12        4     Subchunk1ID    Contains the letters "fmt "
                                   (0x666d7420 big-endian form).
    16        4     Subchunk1Size  16 for PCM.  This is the size of the
                                   rest of the Subchunk which follows this number.
    20        2     AudioFormat    PCM = 1 (i.e. Linear quantization)
                                   Values other than 1 indicate some 
                                   form of compression.
    22        2     NumChannels    Mono = 1, Stereo = 2, etc.
    24        4     SampleRate     8000, 44100, etc.
    28        4     ByteRate       == SampleRate * NumChannels * BitsPerSample/8
    32        2     BlockAlign     == NumChannels * BitsPerSample/8
                                   The number of bytes for one sample including
                                   all channels. I wonder what happens when
                                   this number isn't an integer?
    34        2     BitsPerSample  8 bits = 8, 16 bits = 16, etc.
              2     ExtraParamSize if PCM, then doesn't exist
              X     ExtraParams    space for extra parameters
    
    36        4     Subchunk2ID    Contains the letters "data"
                                   (0x64617461 big-endian form).
    40        4     Subchunk2Size  == NumSamples * NumChannels * BitsPerSample/8
                                   This is the number of bytes in the data.
                                   You can also think of this as the size
                                   of the read of the subchunk following this 
                                   number.
    

    After this you write the PCM data.

    (Reference).

    0 讨论(0)
提交回复
热议问题