ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Azazaz » 21.04.2015 20:13:58

Интересует библиотека для работы с тегами в mp3, нужно считывать и редактировать информацию из ID3v1 и ID3v2. Подскажите что нибудь рабочее и проверенное.
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Little_Roo » 21.04.2015 21:26:51

Bass - www.un4seen.com
На форуме и примеры есть
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение alex208210 » 21.04.2015 22:57:31

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
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Azazaz » 22.04.2015 13:02:28

Bass библиотека и Tags17 что идет в комплекте не позволяют записывать теги.
Попробую это http://www.gausi.de/mp3fileutils.html.
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Little_Roo » 22.04.2015 15:06:04

Azazaz писал(а):Bass библиотека и Tags17 что идет в комплекте не позволяют записывать теги.

На их форуме http://www.un4seen.com/forum/?topic=15754.0
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Azazaz » 25.04.2015 00:22:37

Скачал здесь http://www.gausi.de/mp3fileutils.html библиотеку, пример скомпилился и он работает как надо, но возникли дополнительные вопросы. В примере не показано каким образом изменять теги или удалять их, напишите как изменить, например, исполнителя и название песни и сохранить изменения.

Добавлено спустя 1 минуту 40 секунд:
Было бы отлично почитать документацию, она вообще имеется?
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Padre_Mortius » 25.04.2015 10:11:38

Azazaz, а в чем проблема? В архиве mp3fileutils_06a.zip по вашей ссылке лежит pdf файл с документацией (на немецком).
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Azazaz » 25.04.2015 13:12:13

TID3v2Tag.artist
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;

Вроде я все делаю так же как в этом примере. В чем же подвох?
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение alex208210 » 26.04.2015 00:17:47

ну так удали эту строку, зачем она тебе нужна
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение SSerge » 26.04.2015 05:39:00

alex208210 писал(а):Вроде я все делаю так же как в этом примере. В чем же подвох?


Ну, повох наверно в том, что в позднем delphi - String есть абсолютное тождество UnicodeString.
Кодировка unicodeString - utf16, а не utf8, и не немаркировканный AnsiString, как в /lazarus.
Тем более, если Lazarus на компиляторе 2.6, то в нем UnicodeString == WideString и в принципе нет скрытой конверсии кодовых страниц AnsiString, потому что в AnsiString нет данных о кодовой странице.

Azazaz писал(а):Смотрим файл iputils.pas:

Ну так разработчики функции забили ее реализовать для лазаруса, и - если результат функции используется далее - вот и открытие файла с именем "пустая строка" в качестве временного - вот и вылет. Imho, вашу библиотеку под лазарусом возможно вообще досконально не тестировали.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: ID3v1, ID3v2 тег библиотека. Работа с mp3 файлами.

Сообщение Azazaz » 26.04.2015 11:22:09

Библиотека 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;
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 248

Рейтинг@Mail.ru