Пример для HmsCreateMediaItemTags и THmsScriptFileTags

Post Reply
Eugene
Posts: 2805
Joined: Tue Sep 16, 2008 7:30 pm

Пример для HmsCreateMediaItemTags и THmsScriptFileTags

Post by Eugene »

Данная функция и класс могут быть полезны для чтения свойств файлов, которые программа не обрабатывает по-умолчанию, например, в событии "После чтения свойств медиа-ресурса".

Пример отображает список тегов текущего медиа-ресурса в списке фильмов, музыки, фото.

Настройки - Обработка - Добавить
Название: Список тегов
Включить "Кнопка на главной форме"
Скрипт:

Code: Select all

var
  FileTags: THmsScriptFileTags;
  TextTags: TStringList;  
  i: Integer;  
  sProviderName, sValue: string;    
begin
  if InputQuery('Провайдер тегов', 'Exif, FFmpeg, MediaInfo, Shell, Hms, Xmp', sProviderName) then begin
    FileTags := HmsCreateMediaItemTags(sProviderName, HmsCurrentMediaListItem);
    if FileTags <> nil then try
      TextTags := TStringList.Create;
      try           
        for i := 0 to FileTags.GetTagCount - 1 do begin
          sValue := VarToStr(FileTags.GetTagValue(FileTags.GetTagID(i)));
          if (sValue <> '') and (Length(sValue) < 100) then  
            TextTags.Add(Format('%s (%s): %s', [FileTags.GetTagName(i), FileTags.GetTagID(i), sValue]));
        end;      
        ShowMessage(TextTags.Text)
      finally
        TextTags.Free
      end                  
    finally  
      FileTags.Free
    end
  end     
end.
slawa321
Posts: 224
Joined: Wed Sep 14, 2011 12:06 pm

Re: Пример для HmsCreateMediaItemTags и THmsScriptFileTags

Post by slawa321 »

Давно хотел получить информацию о файле по MediaInfo ,вроде теперь получается ,но скажем высоты и ширины видео в пикселях там нет ,а когда в правом окне программы на файле правой кнопкой-свойство файла MediaInfo -эти параметры есть ,видемо нужен пример для
HmsMediaInfoCreate(const aFilePath: string; const aMediaItemID: string): Boolean
Моя мультимедия :Телевизор Samsung LE46D550K1, Телефон HTC HD2
Eugene
Posts: 2805
Joined: Tue Sep 16, 2008 7:30 pm

Re: Пример для HmsCreateMediaItemTags и THmsScriptFileTags

Post by Eugene »

slawa321 wrote:нужен пример для
HmsMediaInfoCreate(const aFilePath: string; const aMediaItemID: string): Boolean
Пример для видео-дорожки (Stream_Video), возможные значения в описании типа TMIStreamKind:

Code: Select all

var
  i, iCount: Integer;  
  sValue: string;
  TextTags: TStringList;      
begin
  if HmsCurrentMediaListItem <> nil then begin
    if HmsMediaInfoCreate('', HmsCurrentMediaListItem.ItemID) then begin
      TextTags := TStringList.Create;
      try
        iCount := HmsMediaInfoGetCount(Stream_Video);
        for i := 0 to iCount - 1 do begin  
          sValue := VarToStr(HmsMediaInfoGetI(Stream_Video, 0, i));
          if (sValue <> '') and (Length(sValue) < 100) then  
            TextTags.Add(Format('%s (%s): %s', [
               HmsMediaInfoGetI(Stream_Video, 0, i, Info_Name_Text),
               HmsMediaInfoGetI(Stream_Video, 0, i, Info_Name), sValue]));
        end;    
        ShowMessage(TextTags.Text)
      finally
        TextTags.Free
      end                  
    end
  end     
end.
Post Reply