Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение MP3 тэга

Delphi , Мультимедиа , Аудио



Автор: Victor
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Функция получает ID3v1 тэг из указанного mp3-файла.

Зависимости: uses System :)
Автор:       Victor, zazoo@ukr.net, ICQ:149676405, Киев
Copyright:   Собственное написание
Дата:        06 мая 2002 г.
***************************************************** }

type
  TMP3Tag = record
    FileName, Title, Artist, Album, Year, Comment: string;
  end;

function GetMP3Tag(fn: string): TMP3Tag;
var
  tag: array[0..127] of char;
  f: file;
  i: byte;
  s: string;

  procedure DelSpace(var s: string);
  begin // Удаляет пробелы и символы
    // #0 в конце строки.
    if length(s) = 0 then
      exit;
    while s[length(s)] in [' ', #0] do
    begin
      delete(s, length(s), 1);
      if s = '' then
        break;
    end;
  end;

begin
  result.FileName := fn;
  result.Title := '';
  result.Artist := '';
  result.Album := '';
  result.Year := '';
  result.Comment := '';

  AssignFile(F, fn); // Открываем файл
{$I-} // с проверкой его существования :)
  Reset(F, 1);
  Seek(F, FileSize(F) - 128); // Читаем тэг - последние 128 байт
  BlockRead(f, tag, 128);
  CloseFile(F);
{$I+}

  if IOResult <> 0 then
  begin
    exit;
  end;

  s := '';
  for i := 0 to 127 do
    s := s + tag[i];

  if copy(s, 1, 3) = 'TAG' then // В файле есть тэг - разбираем его
  begin
    result.Title := copy(s, 4, 30);
    DelSpace(result.title);
    result.Artist := copy(s, 34, 30);
    DelSpace(result.artist);
    result.Album := copy(s, 64, 30);
    DelSpace(result.album);
    result.Year := copy(s, 94, 4);
    DelSpace(result.year);
    result.Comment := copy(s, 98, 30);
    DelSpace(result.comment);
  end;
end;

Пример использования:

var
  Tag: TMP3Tag;
begin
  if OpenDialog1.Execute then
    Tag := GetMP3Tag(OpenDialog1.FileName);
end;

Код, который вы предоставили, - это функция Delphi, которая извлекает тег ID3v1 из файла MP3. Это полезная инструмент для тех, кто нуждается в чтении метаданных из файлов MP3.

Вот разбивка кода:

  • Тип записи TMP3Tag представляет собой тег ID3v1, содержащий поля для имени файла, заголовка, исполнителя, альбома, года и комментария.
  • Функция GetMP3Tag принимает имя файла в качестве входного параметра и возвращает запись TMP3Tag.
  • Функция открывает указанный файл MP3, читает его последние 128 байт (которые содержат тег ID3v1), и хранит их в массиве символов (tag).
  • Затем функция проходит по массиву tag, извлекая соответствующие информацию, такие как заголовок, исполнитель, альбом, год и комментарий. Извлеченные значения хранятся в соответствующих полях записи TMP3Tag.
  • Функция также включает в себя вспомогательный процедуру DelSpace, которая удаляет пробелы и символ null (#0) с конца строки.

Пример использования в конце показывает, как использовать функцию GetMP3Tag с компонентом OpenDialog, который позволяет пользователям выбрать файл MP3. Once the file is selected, the program calls GetMP3Tag with the file name and assigns the returned tag information to a TMP3Tag variable.

Вот некоторые предложения по улучшению кода:

  1. Обработка ошибок: Код только проверяет, существует ли файл перед открытием, но что если файл не является файлом MP3 или имеет поврежденный тег ID3v1? Добавление более надежной обработки ошибок может улучшить функциональность функции.
  2. Организация кода: Функция GetMP3Tag quite long и выполняет несколько независимых задач (чтение файла, извлечение данных из тега и т.д.). Рассмотрите возможность разбивки ее на более маленькие процедуры или функции для улучшения читаемости и поддержки кода.
  3. Согласованность типов данных: Функция использует оба типа string и char для хранения данных. Для улучшения согласованности можно использовать единый тип данных throughout (например, string) и конвертировать между ними, когда это необходимо.

В целом, код хорошо структурирован и легко читаем. С некоторыми дополнительными улучшениями он может стать еще более эффективным инструментом для работы с файлами MP3 в Delphi.

Функция GetMP3Tag получает ID3v1-тэг из указанного mp3-файла и возвращает информацию о файле в виде структуры TMP3Tag.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Аудио ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:30:31/0.0033061504364014/0