我正在写一个处理音频文件的软件我正在使用libsndfile库读取wave文件数据,我遇到了一个他们的文档没有解决的疑问:读取项的函数和读取帧的函数之间有什么区别或者,换句话说,如果我同时交换sf_read_short
和sf_readf_short
,得到的结果是否相同?
我读过一些问题,一个音频帧等于一个样本,所以我认为libsndfile调用的项可能是同一回事在我的测试中,它们似乎是一样的。
最佳答案
我也很担心,找到了答案。
问题12:我在看sfu read*什么是物品什么是框架?
项目是您正在读取的数据类型的单个示例;即
sf_read_short的单个短值或
读浮点数对于只有一个频道的声音文件,帧是
与一个项目(即一个样本)相同,而对于多声道声音
文件中,单个帧包含每个通道的单个项。
这里有两个简单、正确的例子,假设它们都是
使用立体声文件,首先使用项:
#define CHANNELS 2
short data [CHANNELS * 100] ;
sf_count items_read = sf_read_short (file, data, 200) ;
assert (items_read == 200) ;
现在使用帧读取完全相同的数据量:
#define CHANNELS 2
short data [CHANNELS * 100] ;
sf_count frames_read = sf_readf_short (file, data, 100) ;
assert (frames_read == 100) ;
这是复制粘贴自:
libsndfile FAQ,问题12。