
Related Audio Attribute Part 3

How samples are combined

This is mainly for two-channel or multi-channel audio. For a two-channel audio, it can be combined in the following two ways:
interleaved Taking stereo as an example, a stereo audio sample is obtained by interleaving the storage of two mono samples.
flat. The samples of each channel are stored separately.
The data after FFmpeg audio decoding is stored in the AVFrame structure.
In packed format, frame.data[0] or frame.extended_data[0] contains all the audio data.
In Planar format, frame.data[i] or frame.extended_data[i] represents the data of the i-th channel (assuming channel 0 is the first), the size of the AVFrame.data array is set to 8, if If the number of channels exceeds 8, you should get the channel data from frame.extended_data.
sample format
The sample formats in FFmpeg are mainly:
copy code
enum AVSampleFormat {
AV_SAMPLE_FMT_NONE = – 1 ,
AV_SAMPLE_FMT_U8, /// < 8 bits unsigned
AV_SAMPLE_FMT_S16, /// < 16 bits
signed AV_SAMPLE_FMT_S32, /// < 32 bits
signed AV_SAMPLE_FMT_FLT, /// < float
AV_SAMPLE_FMT_DBL, /// < double
AV_SAMPLE_FMT_U8P, /// < 8 bits unsigned, flat
AV_SAMPLE_FMT_S16P, /// < 16 bits signed, flat
AV_SAMPLE_FMT_S32P, /// < 32 bits signed, flat
AV_SAMPLE_FMT_FLTP, /// < float, flat
AV_SAMPLE_FMT_DBLP, /// < double, flat
AV_SAMPLE_FMT_S64, /// < 64 bits
signed AV_SAMPLE_FMT_S64P, /// < 64 bits signed, plain
AV_SAMPLE_FMT_NB /// < Number of sample formats DO NOT USE if dynamically linked
};
copy code
to illustrate:
1. U8 (8-bit unsigned integer), S16 (16-bit integer), S32 (32-bit integer), FLT (single-precision floating-point type), DBL (double-precision floating-point type), S64 (64-bit integer), those not ending with P are interleaved structures, and those ending with P are flat structures.
2. Flat mode is FFmpeg’s internal storage mode, and the audio files we use are in packed mode.
3. The FFmpeg audio sample format that decodes different output audio formats is not the same. The test found that the data output by AAC decoding is in floating point AV_SAMPLE_FMT_FLTP format, and the data output by MP3 decoding is in AV_SAMPLE_FMT_S16P format (the mp3 file used is 16-bit deep). For the specific sample format, you can see the format member in the decoded AVFrame or the sample_fmt member in the AVCodecContext of the decoder.
Bit rate
The transfer rate per second (bit rate, also called bitrate). Like 705.6kbps or 705600bps, where b is a bit, ps is per second (per second), which means a capacity of 705600bit per second. Compressed audio files are often represented at double speed, for example CD quality MP3 is 128kbps/44100HZ. Note that the unit here is bit instead of byte. One byte is equal to 8 bits (bits). The bit is the smallest unit. It is generally used to describe network speed and various communication speeds. The byte is used to calculate the size. hard drive and memory.
Mbps is: Millionbit per second (millions of bits per second);
Kbps is: Kilobit per second (kilobit per second);
bps is: bit per second (bit per second), the corresponding conversion ratio is:
1Millionbit=1000Kilobit=1000000bit; 1Mbps = 1000,000bps; Again, this is the unit of speed, which refers to the number of bits transmitted per second. The unit of measure for data transmission speed K is the decimal meaning, but the K for data storage is the binary meaning. E.g:
The 1M bandwidth generally described is 1 Mbps = 1,000,000 bps = 1,000,000 / 8 / 1,000 = 125; therefore, the download speed of 1M bandwidth generally does not exceed 125KB/s
. 1000 = 12.5, so the maximum download rate of 100M bandwidth can reach 12.5MB/s
. Of course, the above is only the theoretical rate. In fact, the maximum download rate may not reach that much, and it is mainly affected by various losses, generally 100MB A broadband download rate of 10MB is not bad.



