是否可以获取 SDL 库中加载的 WAV 文件的长度(以秒为单位)?

问题描述 投票:0回答:0

我正在尝试找到一种方法来获取加载到 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 文件时长?

file audio sdl wav duration
© www.soinside.com 2019 - 2024. All rights reserved.