J'essaye de mettre une pochette d'album dans un .mp3 avec TagLib mais j'obtiens une erreur 11 (erreur de seg) et je n'arrive pas à trouver une solution.
Ceci est mon code à ce jour:Taglib définit l'image de l'album mais donne la faute de segmen
TagLib::MPEG::File mp3_file(filename.c_str());
TagLib::ID3v2::Tag *mp3_tag;
mp3_tag = mp3_file.ID3v2Tag(true);
TagLib::ID3v2::AttachedPictureFrame picture;
picture.setMimeType("image/jpeg");
picture.setDescription("Cover");
picture.setType(TagLib::ID3v2::AttachedPictureFrame::FrontCover);
std::ifstream image(image_path, std::ios::binary | std::ios::ate);
const auto fileSize = image.tellg();
image.seekg(0);
TagLib::ByteVector image_data((unsigned int) fileSize, 0);
image.read(image_data.data(), fileSize);
image.close();
picture.setPicture(image_data);
mp3_tag->addFrame(&picture);
mp3_file.save();
L'image est un .jpg de sorte que le type MIME est correct. Lorsque le code atteint la ligne mp3_tag->addFrame(&picture);
il existe avec seg faute, la chose étrange est que l'image est définie sur le fichier .mp3 donc je ne comprends pas ce qui pourrait causer cette erreur.
J'ai essayé de chercher une cause possible en examinant certains codes C# et Ruby en utilisant cette bibliothèque, mais je ne trouve pas de solution qui n'entraîne pas une erreur de segmentation.
marquer votre réponse correcte, qui était le principal problème de ma mise en œuvre tout en laissant tout le monde qui pourrait venir sur cette question savent que, après '' 'image.close(); '' 'pour définir correctement l'image, il est nécessaire de faire' '' auto * image = new TagLib :: ID3v2 :: AttachedPictureFrame(); '' 'puis définissez le type MIME, la description et le type comme je l'ai fait dans la question d'origine et enfin utiliser '' 'picture-> setPicture (image_data);' '' et '' 'mp3_tag-> addFrame (image);' '' pour définir l'image dans le fichier mp3. –
@JohnSmith Cool, content que ça a aidé! – ProXicT