我正在尝试使用旧的fmodex获取当前正在使用FMOD播放的音频文件的标题,艺术家和专辑名称。经过一些谷歌搜索后,我发现我应该阅读文件的“标签”。提供了一些样板代码,但我感觉它已经过时了,因为它没有按预期工作。 我的代码用于返回根据样板文件改编的歌曲标题如下:
string FmodPlayer::getSongTitle()
{
FMOD_TAG tag;
char *title = NULL;
audiostream->getTag("FILE", 0, &tag); //audiostream is whatever song is currently playing
if (tag.type == FMOD_TAGTYPE_ID3V2)
{
audiostream->getTag("TIT2", 0, &tag);
title = (char *)tag.data;
//return ("ID3v2");
}
else
{
audiostream->getTag("TITLE", 0, &tag);
title = (char *)tag.data;
//return ("Wasn't an ID3v2");
}
string songName(title);
return songName;
}
虽然这会返回某些内容,但它不是人类可读的,并且显示为大约5个钻石问号或随机字符。无论我将其作为字符串还是字符数组返回,都是一样的 还应该注意的是,我是FMOD的新手,因此我不知道自己在做什么。
您会注意到我还包含一些注释掉的返回语句,以测试程序是否将标记视为ID3v2标记。它总是显示mp3文件不包含ID3v2标签,无论我尝试了多少mp3。我不知道这意味着什么,我的MP3是否都是错误的,或者程序是否解释错误。
所以,基本上,我在这里看不到什么?如何让它返回一个人类可读的歌曲名称?一旦我将歌曲标题记下来,我相信对于艺术家,专辑等也会很容易做到这一点。