What is the difference between sample rate and frame rate? I tried to check a song and found sample rate and frame rate using java.They have same value, It makes me confuse.
doesn't frame consist of many sample?
thank you
What is the difference between sample rate and frame rate? I tried to check a song and found sample rate and frame rate using java.They have same value, It makes me confuse.
doesn't frame consist of many sample?
thank you
read the documentation
Sample rate = number of samples / second
Frame = 1 sample from each channel (PCM)
Frame Size = Sample size * Channels
Frame Rate = frames / second.
For PCM the sample rate and the frame rate are the same since a frame consists of a a sample from each channel
For encodings like PCM, a frame consists of the set of samples for all channels at a given point in time, and so the size of a frame (in bytes) is always equal to the size of a sample (in bytes) times the number of channels
...with some other sorts of encodings...the sample rate and sample size refer to the data after it is decoded into PCM, and so they are completely different from the frame rate and frame size
–
Steinberg From: http://www.jsresources.org/faq_audio.html#frame_rate
For PCM, A-law and μ-law data, a frame is all data that belongs to one sampling intervall. This means that the frame rate is the same as the sample rate.
For compressed formats like Ogg Vorbis, mp3 and GSM 06.10, the situation is different. A frame is a block of data as it is output by the encoder. Often, these blocks contain the information for several sampling intervalls. For instance, a mp3 frame represents about 24 ms. So the frame rate is about 40 Hz. However, the sample rate of the original is preserved even inside the frames and is correctly restored after decoding.
Viewing the Java Code javax.sound.sampled.AudioFormat.java
line 252
:
frameSize
((sampleSizeInBits + 7) / 8) * channels
When is Different to http://soundfile.sapp.org/doc/WaveFormat/
BlockAlign == NumChannels * BitsPerSample/8
I can't understand Why use + 7
.
channels=2
. So, for sampleSizeInBits=8 or 16
we still will have frameSize=2 or 4
bytes, as it should be. +7
is neglected as we have integer division here. +7
starts playing role when sampleSizeInBits
is not multiple to 8. E.g. sampleSizeInBits=10
. So, for sampleSizeInBits=10
and channels=2
frameSize=((12+7)/8)*2=(19/8)*2=4. Briefly, +7
takes into account cases when sampleSizeInBits
is not multiple to 8 to have correct number of bytes for frameSize
–
Worship © 2022 - 2024 — McMap. All rights reserved.