2015-03-25 83 views
1

我在C++中使用taglib从mp3文件更改元数据。我写了一个很好的代码。但是我发现了一个无法用taglib打开的MP3文件。Mp3文件为空使用taglib(C++)

MP3文件有标签。我可以用Vlc媒体播放器和MediaInfo以及explorer.exe查看它们。

我试试这个最小代码,但它说文件无效。

TagLib::FileRef filer("file.mp3"); 
     if(filer.isNull()) 
      cout <<"null"; 

或验证码:

TagLib::MPEG::File fileMpeg("file.mp3"); 
if(!fileMpeg.isValid()) 
{ 
    cout << "file not valid"; 
} 

其他文件的工作,但不是一个。 感谢您的帮助。

+0

难道是特定的file.mp3多数民众赞成在失败,但其他人的工作?我曾经遇到过一次Winamp的问题,有一个mp3文件在扫描时导致它崩溃,其他一切都很好。 – 2015-03-25 02:03:09

+0

实际上,有一些mp3文件可以工作,而其他文件则为空。我不知道为什么。但最多的MP3文件的工作。 – user3502626 2015-03-25 02:05:57

+0

我只是将不工作的mp3文件转换为新的mp3文件。这个新的mp3文件起作用,TagLib检测到它具有id3v2标签,但标签相同,但另一个仍然为空。 – user3502626 2015-03-25 02:11:44

回答

0

我发现问题,问题不是从文件,而是从文件名或目录。 要解决此问题,我修改cont wchar_t*而不是const char*,因为我试图打开的文件包含ISO或unicode编码的法语字符,但不包含ASCII。