sample_rate(采样率),sample(采样),duration(时长)是什么关系
时间:2023-12-28 05:07:01
sample_rate(采样率),sample(采样),duration(时长)是什么关系?
发现一个音频包解成一个frame 之后,有以下数据
nb_samples = 1024
sample_rate = 48000
pkt_duration = 1920
pkt_size = 427
这些值到底是什么关系?
pkt_size = 427 427 bytes
nb_samples = 1024 解码后获得1024个采样数据
sample_rate = 48000 表示每秒需要播出48K 数据
pkt_duration = 1920
sample_rate:采样率, 每秒采样次数 48000HZ,每个sample1/48000秒
nb_samples: 采样次数
音频播放时间, nb_samples 采样点所能播放的时间
duration_s=nb_samples*(1/48000)秒,
duration 单位不是秒,也不是毫秒,而是AVStream 时基的个数.
duration=duration_s / av_q2d(st->time_base)
st->time_base 是 (1,90k), 则av_q2d=1/90k
所以duration 实际上秒数乘以90K
则:
duration = 1024 * 1/48K *90K = 1920
特例: 如果令st->time_base == sample_rate,
则duration=nb_samples.
另外, pts 是按 duration 来递长的。