使用TagLib编写ID3v2元数据

| 我正在写音乐开膛手,已经有好几天了。除设置元数据外,一切都按预期进行。我正在下载原始PCM数据,使用ffmpeg.exe编码为MP3,然后将元数据设置为文件。我知道ffmpeg.exe可以写入元数据,但是由于我在命令行中指定元数据时无法写入字符(\“),因此它不适合我的需要。而且,ffmpeg.exe最多将我的数据剪切为30个字符,这使用TagLib时也是我的问题:
TagLib::FileRef f(\"some_mp3.mp3\");

f.tag()->setArtist(\"Loooooooooooooooooooooooooooooooooooong Artist\");
f.tag()->setAlbum(\"Loooooooooooooooooooooooooooooooooooong Album\");
f.tag()->setTitle(\"Loooooooooooooooooooooooooooooooooooong Title\");
f.tag()->setTrack(37);

f.save();
似乎此代码使用的是ID3v1,因为它将长字符串裁剪为仅30个字符,是的,我确实读过有关此:P的一些维基百科:我需要它使用ID3v2来提供长数据。有什么想法吗?     
已邀请:
        当我从ffmpeg文档中得到它时,ffmpeg.exe使用了me脚的编解码器。因此,您可能需要检查如何配置lame而不是ffmpeg。 Lame有ID3标签的选项,请在此处查看其主页:http://lame.cvs.sourceforge.net/viewvc/lame/lame/USAGE     
        您可以使用TagLib :: MPEG :: File类打开文件,并使用ID3v2Tag获得ID3v2标签。 您的代码将变为:
  TagLib::MPEG::File f(\"some_mp3.mp3\");
  f.ID3v2Tag()->setArtist(\"Loooooooooooooooooooooooooooooooooooong Artist\");
  f.ID3v2Tag()->setAlbum(\"Loooooooooooooooooooooooooooooooooooong Album\");
  f.ID3v2Tag()->setTitle(\"Loooooooooooooooooooooooooooooooooooong Title\");
  f.ID3v2Tag()->setTrack(37);
  f.save();
希望这可以帮助     

要回复问题请先登录注册