我正在尝试找到一种方法来获取加载到 SDL 库中的 WAV 音频文件的持续时间。
我使用的是 SDL for Windows 的最新官方版本,64 位,版本 2.26.5.
SDL 在调用
LoadWAV
函数后提供有关加载文件的以下数据。
SDL_AudioSpec* SDL_LoadWAV(const char* file,
SDL_AudioSpec* spec,
Uint8** audio_buf,
Uint32* audio_len)
这里有我在下面描述的
SDL_AudioSpec
,以及audio_len
,它只是文件大小(以字节为单位)。
typedef struct SDL_AudioSpec
{
int freq;
SDL_AudioFormat format;
Uint8 channels;
Uint8 silence;
Uint16 samples;
Uint16 padding;
Uint32 size;
SDL_AudioCallback callback;
void *userdata;
} SDL_AudioSpec;
我加载的文件是从系统中取出的,它位于
C:\Windows\Media
文件夹中,所以这个文件必须100%正确。
加载我的 WAV 文件后,我只看到
SDL_AudioSpec
的两个字段已填写。这些字段是:freq
和 format
。所有其他字段都归零。以字节为单位的文件大小被填充到另一个函数参数中,但它对我来说没有任何意义,因为它是以字节为单位设置的,而不是像毫秒秒这样的时间单位。
我在 SDL 的文档中进行了搜索,但我没有看到其他方法来获取以秒为单位的文件长度,或者简单地说,以秒为单位的文件持续时间。
是否真的可以仅使用 SDL 库而不使用任何其他第三方工具来获取 WAV 文件时长?