ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.
Модератор: Модераторы
ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.
Интересует библиотека для работы с тегами в mp3, нужно считывать и редактировать информацию из ID3v1 и ID3v2. Подскажите что нибудь рабочее и проверенное.
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
Bass - www.un4seen.com
На форуме и примеры есть
На форуме и примеры есть
-
alex208210
- постоялец
- Сообщения: 207
- Зарегистрирован: 12.05.2010 13:16:51
Bass - www.un4seen.com
На форуме и примеры есть
это библиотека для воспроизведения mp3 а не чтения тегов, она позволяет читать теги только из созданного потока bass.
Для чтения тегов нужно использовать
MP3FileUtils v0.6
Copyright (C) 2005-2011, Daniel Gaussmann mail@gausi.de
All rights reserved.
-------------------------------------------------------
Lazarus port done 2011 by
Frank Plagge
frank@plagge.net
Bass библиотека и Tags17 что идет в комплекте не позволяют записывать теги.
Попробую это http://www.gausi.de/mp3fileutils.html.
Попробую это http://www.gausi.de/mp3fileutils.html.
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
Azazaz писал(а):Bass библиотека и Tags17 что идет в комплекте не позволяют записывать теги.
На их форуме http://www.un4seen.com/forum/?topic=15754.0
Скачал здесь http://www.gausi.de/mp3fileutils.html библиотеку, пример скомпилился и он работает как надо, но возникли дополнительные вопросы. В примере не показано каким образом изменять теги или удалять их, напишите как изменить, например, исполнителя и название песни и сохранить изменения.
Добавлено спустя 1 минуту 40 секунд:
Было бы отлично почитать документацию, она вообще имеется?
Добавлено спустя 1 минуту 40 секунд:
Было бы отлично почитать документацию, она вообще имеется?
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Azazaz, а в чем проблема? В архиве mp3fileutils_06a.zip по вашей ссылке лежит pdf файл с документацией (на немецком).
TID3v2Tag.artist
TID3v2Tag.title
Єто UnicodeString, как и остальные поля тега, как преобразовать из AnSi в Unicode?
Добавлено спустя 6 часов 55 минут 14 секунд:
Пытаюсь запустить вот такой код:
В результате клика по кнопке получаю вылет программы с таким сообщением:
"Проект * вызвал класс исключения 'RunError(103)'.
В файле 'iputils.pas' на строке 2810"
Смотрим файл iputils.pas:
В примерах на Делфи откопал вот такой код:
Вроде я все делаю так же как в этом примере. В чем же подвох?
TID3v2Tag.title
Єто UnicodeString, как и остальные поля тега, как преобразовать из AnSi в Unicode?
Добавлено спустя 6 часов 55 минут 14 секунд:
Пытаюсь запустить вот такой код:
Код: Выделить всё
procedure TMainForm.Button1Click(Sender: TObject);
var us: Unicodestring;
begin
if not FileExistsUtf8(Mfile)
then Showmessage('File not found');
V2.ReadFromFile(Mfile); // V2 – Tid3v2Tag
if (V2.Exists)
then begin
us:= 'Vasia';
V2.Artist:= us;
V2.Genre:= us;
V2.WriteToFile(Mfile);
end else
ShowMessage('Error');
end; В результате клика по кнопке получаю вылет программы с таким сообщением:
"Проект * вызвал класс исключения 'RunError(103)'.
В файле 'iputils.pas' на строке 2810"
Смотрим файл iputils.pas:
Код: Выделить всё
{ Get Windows system TEMP path in a string }
function GetTemporaryPath: string;
{$IFDEF IP_LAZARUS}
begin
writeln('ToDo: IpUtils.GetTemporaryPath'); // та самая строка
Result:='';
end; В примерах на Делфи откопал вот такой код:
Код: Выделить всё
procedure TForm1.BtnWriteLevel1Click(Sender: TObject);
begin
// Standard-Eigenschaften setzen
Id3v2Tag.Title := Lblv2Titel.Text;
Id3v2Tag.Artist := Lblv2Artist.Text;
Id3v2Tag.Album := Lblv2Album.Text;
Id3v2Tag.Comment := Lblv2Comment.Text;
Id3v2Tag.Genre := cbIDv2Genres.Text;
Id3v2Tag.Track := Lblv2Track.Text;
Id3v2Tag.Year := Lblv2Year.Text;
ID3v2Tag.URL := Lblv2URL.Text;
ID3v2Tag.Rating := SBRating1.Position;
ID3v2Tag.Lyrics := memoLyrics.Text;
id3v2Tag.WriteToFile(Edit1.Text);
end;
Вроде я все делаю так же как в этом примере. В чем же подвох?
-
alex208210
- постоялец
- Сообщения: 207
- Зарегистрирован: 12.05.2010 13:16:51
ну так удали эту строку, зачем она тебе нужна
alex208210 писал(а):Вроде я все делаю так же как в этом примере. В чем же подвох?
Ну, повох наверно в том, что в позднем delphi - String есть абсолютное тождество UnicodeString.
Кодировка unicodeString - utf16, а не utf8, и не немаркировканный AnsiString, как в /lazarus.
Тем более, если Lazarus на компиляторе 2.6, то в нем UnicodeString == WideString и в принципе нет скрытой конверсии кодовых страниц AnsiString, потому что в AnsiString нет данных о кодовой странице.
Azazaz писал(а):Смотрим файл iputils.pas:
Ну так разработчики функции забили ее реализовать для лазаруса, и - если результат функции используется далее - вот и открытие файла с именем "пустая строка" в качестве временного - вот и вылет. Imho, вашу библиотеку под лазарусом возможно вообще досконально не тестировали.
Библиотека http://www.xixmusicplayer.org/download/ID3v2.pas
Рабочий пример:
Рабочий пример:
Код: Выделить всё
procedure TMainForm.Button1Click(Sender: TObject);
begin
if not FileExistsUtf8(Mfile)
then begin
Showmessage('File not found'); exit;
end;
v2.ReadFromFile(Mfile);
if (V2.Exists)
then begin
v2.Genre:= 'Rock';
V2.Artist:= 'Стас Михайлов';
V2.Album:= 'Потные носки';
V2.SaveToFile(Mfile);
end else
ShowMessage('Error');
end;
