Учитывая путь к mp3-файлу,
как создать и инициализировать объект IPropertyStore для работы с метаданными этого файла?
В частности, какя могу получить отсюда:
"C:\\Music\\Viva Las Vegas.mp3"
сюда:
store->GetValue(PKEY_Music_AlbumArtist, &variant);
Вот некоторый псевдо-код для пояснения того, что я пытаюсь сделать:
#include "stdafx.h"
#include <propsys.h>
#include <propkey.h>
void main ()
{
// property store must somehow represent the mp3 file
IPropertyStore* store = "C:\\Music\\Viva Las Vegas.mp3"; // HELP!
PROPVARIANT variant;
// get the existing album artist
store->GetValue(PKEY_Music_AlbumArtist, &variant);
assert(variant== "Elvis Presley");
// set it to something else
variant= "ZZ Top";
store->SetValue(PKEY_Music_AlbumArtist, variant);
}
ПРЕДПОСЫЛКИ
Возможно, есть лучший язык для этого, но я хочу использовать C ++ (это длинная история).
Первоначально, после исследования метаданных mp3Казалось, что ID3-теги с TagLib - это то, что нужно.Поэтому я написал утилиту, которая отлично работала на нескольких полях.Но потом я обнаружил, что TagLib ограничен небольшим подмножеством из множества возможных полей, и я хочу получить доступ ко всем из них.
Поле, которое меня больше всего интересует, - это Исполнитель альбома, потому что проигрыватель Windows Media использует егокак порядок сортировки по умолчанию, который не может быть изменен.
Я изменил источник TagLib, чтобы получить доступ к исполнителю альбома вместо исполнителя Contributing (путем изменения всех вхождений '\ 251ART' на '\ 141ART'), но это нене работает.
Я уверен, что есть способ, которым все можно сделать с помощью тегов ID3, но я бы не стал полагаться на дополнительные вещи, такие как TagLib, ZLIB и средство CMake.Я хочу использовать IPropertyStore, потому что он встроен, и мне кажется, что проще всего преодолеть это препятствие.
В Интернете я нашел несколько примеров IPropertyStore и попытался помассажироватьбез всякой удачи, чтобы удовлетворить мои потребности, я все еще не уверен,
«Справка» MSDN не очень полезна - никаких спецификаций, примеров - она даже не говорит мне, какой заголовочный файлвключать.Справка MSDN теперь ужасна по сравнению с тем, что было раньше, или я что-то упустил?Без гугла я бы облажался.В любом случае ...
Я надеюсь, что кто-то может показать мне в 3 или 4 строках кода, как создать и инициализировать IPropertyStore для моей цели.Заранее спасибо.