MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Здесь можно обсудить ваш любимый плагин.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by ccaid »

Latest post of the previous page:

Taciturn wrote: Mon 29 Mar, 2021 21:14 а Anamorphosis как повезёт
я завел себе хоткей для перезагрузки плагина. если CtrlQ не сработал, перезапускаю, после чего гарантированно CtrlQ срабатывает.
Фар делают добрые люди
User avatar
CDK
Posts: 309
Joined: Thu 28 Apr, 2005 08:28
Has thanked: 13 times
Been thanked: 3 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by CDK »

Я в итоге сваял себе "мимикрию" под Qview MediaInfo

Code: Select all

local hotkey = "AltQ"
local nextHK = "CtrlPgDn"
local prevHK = "CtrlPgUp"
local temp = win.GetEnv('Temp') .. '\\far_mediainfo.media'
local mediaInfo = 'MediaInfo.exe'

local function ShowInfo()
  if (APanel.Current == '..') then
    win.system(mediaInfo .. ' . > "' .. temp .. '"')
  else
    win.system(mediaInfo .. ' "' .. APanel.Current .. '" > "' .. temp .. '"')
  end;

  local X1 = (PPanel.Left and 0 or APanel.Width) + 1
  local Y1 = 0
  local X2 = PPanel.Width + (PPanel.Left and 0 or APanel.Width) - 2
  local Y2 = PPanel.Height - 2
  local F = far.Flags

  editor.Editor (temp, APanel.Current, X1, Y1, X2, Y2, F.EF_NONMODAL + F.EF_IMMEDIATERETURN + F.EF_DELETEONLYFILEONCLOSE + F.EF_DISABLEHISTORY + F.EF_LOCKED, nil, nil, 65001)
  Keys('CtrlB')
end

local function InMediaInfo(Id, Event) return editor.GetFileName() == temp end

Macro {
  description="MediaInfo";
  area="Shell";
  key=hotkey;
  flags="NoPluginPanels";
  action=ShowInfo;
}

Macro {
  description="MediaInfo Down";
  area="Editor";
  key=nextHK;
  flags="";
  condition=InMediaInfo;
  action=function()
    Keys('CtrlB Esc Down')
    ShowInfo()
  end;
}

Macro {
  description="MediaInfo Up";
  area="Editor";
  key=prevHK;
  flags="";
  condition=InMediaInfo;
  action=function()
    Keys('CtrlB Esc Up')
    ShowInfo()
  end;
}

Macro {
  description="MediaInfo Esc";
  area="Editor";
  key="Esc F10";
  flags="";
  condition=InMediaInfo;
  action=function()
    Keys('CtrlB Esc')
  end;
}
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by Wave »

CDK, почему-то такая фигня — когда mediainfo.exe лежит в path, всё работает. Если же не в path, а я правлю строчку типа local mediaInfo = 'D:\\TOOLS\\MediaInfo\\MediaInfo.exe' то файл far_mediainfo.media почему-то получается пустым (точнее, два байта) и соответственно никакой информации не показывается.

Зы. ставить в панели хоткеем AltQ некузяво, из-за этого можно споткнуться на быстром поиске, если ищешь файл, начинающийся на «й» или «q». Впрочем, конечно, это каждый себе может легко поправить.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
CDK
Posts: 309
Joined: Thu 28 Apr, 2005 08:28
Has thanked: 13 times
Been thanked: 3 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by CDK »

А медиаинфо какой качали? Скачал последний CLI x64, положил отдельно, прописал путь, удалил тот что в пути - все работает.

Code: Select all

local hkMain   = "AltQ"
local hkNext   = "CtrlDown"
local hkPrev   = "CtrlUp"
local hkTop    = "CtrlHome"
local hkBottom = "CtrlEnd"
local hkDirDn  = "CtrlPgDn"
local hkDirUp  = "CtrlPgUp"

local keysExit = 'CtrlB Esc'

local temp = win.GetEnv('Temp') .. '\\far_mediainfo.media'
local mediaInfo = 'D:\\test\\MediaInfo.exe'

local function ShowInfo()
  if (APanel.Current == '..') then
    win.system(mediaInfo .. ' . > "' .. temp .. '"')
  else
    win.system(mediaInfo .. ' "' .. APanel.Current .. '" > "' .. temp .. '"')
  end;

  local X1 = (PPanel.Left and 0 or APanel.Width) + 1
  local Y1 = 0
  local X2 = PPanel.Width + (PPanel.Left and 0 or APanel.Width) - 2
  local Y2 = PPanel.Height - 2
  local F = far.Flags

  editor.Editor (temp, APanel.Current, X1, Y1, X2, Y2, F.EF_NONMODAL + F.EF_IMMEDIATERETURN + F.EF_DELETEONLYFILEONCLOSE + F.EF_DISABLEHISTORY + F.EF_LOCKED, nil, nil, 65001)
  Keys('CtrlB')
end

local function InMediaInfo(Id, Event) return editor.GetFileName() == temp end

local function ShowInfoAfter(key)
  Keys(keysExit .. ' ' .. key)
  ShowInfo()
end

Macro {
  description="MediaInfo";
  area="Shell";
  key=hkMain;
  flags="NoPluginPanels";
  action=ShowInfo;
}

Macro {
  description="MediaInfo Down";
  area="Editor";
  key=hkNext;
  condition=InMediaInfo;
  action=function() ShowInfoAfter('Down') end;
}

Macro {
  description="MediaInfo Up";
  area="Editor";
  key=hkPrev;
  condition=InMediaInfo;
  action=function() ShowInfoAfter('Up') end;
}

Macro {
  description="MediaInfo Bottom";
  area="Editor";
  key=hkBottom;
  condition=InMediaInfo;
  action=function() ShowInfoAfter('End') end;
}

Macro {
  description="MediaInfo Top";
  area="Editor";
  key=hkTop;
  condition=InMediaInfo;
  action=function() ShowInfoAfter('Home') end;
}

Macro {
  description="MediaInfo Dir Down";
  area="Editor";
  key=hkDirDn;
  condition=InMediaInfo;
  action=function() ShowInfoAfter('CtrlPgDn') end;
}

Macro {
  description="MediaInfo Dir Up";
  area="Editor";
  key=hkDirUp;
  condition=InMediaInfo;
  action=function()
    if mf.len(win.GetCurrentDir()) > 3 then ShowInfoAfter('CtrlPgUp') end
  end;
}

Macro {
  description="MediaInfo Esc";
  area="Editor";
  key="Esc F10";
  condition=InMediaInfo;
  action=function() Keys(keysExit) end;
}
Wave wrote: Wed 28 Apr, 2021 13:04 Зы. ставить в панели хоткеем AltQ некузяво, из-за этого можно споткнуться на быстром поиске, если ищешь файл, начинающийся на «й» или «q». Впрочем, конечно, это каждый себе может легко поправить.
я для быстрого нажимаю Alt, отпускаю и потом ввожу (AltSearch.lua)
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by Wave »

Оттуда же, но CLi x32 (приходится иметь дело с x32 операционками, так что для универсальности).

Проверил не из конэму и без плагинов и макросов кроме этого. Фар релизный. В общем, скорей всего, это где-то в MediaInfo CLI x86 трабла, но проверить смогу чуть позже.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by Wave »

Ларчик открывается через текущий путь. Если mediainfo задано с полным путём, то строка
win.system(mediaInfo .. ' "' .. APanel.Current .. '" > "' .. temp .. '"')
в моём случае выполняется в папке этого самого медиаинфо, и программа не находит в своей папке того файла, который ей подсовывают как APanel.Current. Почему это срабатывает у вас, не знаю, возможно, у вас есть какой-нибудь ANSI-плагин, который устанавливает текущий путь ФАРа равным текущему каталогу в панелях (есть такой эффект от ANSI-плагинов), или ещё что-то в этом роде. Лечится указанем полного пути
win.system(mediaInfo .. ' "' .. APanel.Path .. '\\' .. APanel.Current .. '" > "' .. temp .. '"')

Ну, и можно ещё немного всякой всячины и проверок накрутить для плагиновых панелей (временная панель и т.п.) или ещё чего-нибудь подобного.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

Уважаемый автор!
Я использовал Ваш плагин в панельном модуле для управления плейлистами. А меня ещё попросили сделать аналог для создания библиотеки фотографий. При вызове плагина он показывает на экране Exif-информацию. Однако при вызове из макроса
Plugin.SyncCall('919C1FC6-A571-4642-99DF-BDACE840ED18', <Имя_файла>)
этой информации нет.
Можно, конечно, обойти эту беду, вызвав плагин для диалога (Plugin.Command('919C1FC6-A571-4642-99DF-BDACE840ED18', '0.jpg')), а на диалог повесить ивент для "выдирания" информации из DI_LISTBOX-а и закрытия диалога, но есть опасение, что на большом количестве фалов это будет работать годы.
Просьба: не могли бы Вы добавить возможность получения Exif-информации при вызове из скрипта? Например, так:
Plugin.SyncCall('919C1FC6-A571-4642-99DF-BDACE840ED18', [[C:\Windows\Themes\0.jpg]], "{Complete name,Format,Exif.Image.DateTime}")
(В последнем вызове нынешняя версия плагина возвращает только Complete name и Format (дважды).
Last edited by buniak_a_h on Thu 17 Mar, 2022 10:04, edited 1 time in total.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

ЕМНИП, для получения Exiv надо добавить параметр false.
Позиция не имеет значения, будет ТОЛЬКО Exiv, т.е. для всего нужно делать 2 вызова
Last edited by 2useven10 on Thu 17 Mar, 2022 12:30, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10, спасибо, получилось.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

Эх! Картинка в GDI+.Thumbnail Data переводится в символьную "читабельную" форму, да ещё и обрезается. Не получится картинку "выдрать" … :-(
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

Переводится, потому как раньше все данные всегда показывались в диалоге.
Для lua, наверное можно будет отдавать 'как есть', но это доработка.
Last edited by 2useven10 on Thu 17 Mar, 2022 15:38, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10 wrote: Thu 17 Mar, 2022 15:36 но это доработка
Это-то понятно. Ради этого даже специальную версию выпускать не стоит. Просто если будете что-то ещё с ним делать, имеет, наверное, смысл как-то учесть. Это ж, наверно, надо не доделывать, а наоборот - выдать строку до преобразование в текст…
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

Все параметры в плагине передаются как wide char строки.
Механизма передачи сырых данных нет.
Самым простым вариантом реализации будет отдача такой же строки как и сейчас,
только без обрезания данных после 20 байт.
Last edited by 2useven10 on Thu 17 Mar, 2022 16:16, edited 3 times in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10, а есть ли способ получить полный список имён тегов, распознаваемых плагином?
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

Я такого не знаю.
И даже если допустить, что можно влезть в кишки всех используемых модулей и получить его,
никаких гарантий что он не изменится в следующей версии нет.
Ну и (из чистого любопытства) ЗАЧЕМ он вам нужен?
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10 wrote: Mon 28 Mar, 2022 03:55 ЗАЧЕМ он вам нужен
Попросили сделать панельный модуль обслуживания фотоальбомов, аналогичный этому. Если для музыки я ещё могу себе представить, какие данные могут понадобиться пользователю, то в фотографиях я вообще ничего не понимаю; надо делать настройку: дать юзеру выбрать из полного списка.
Post Reply

Return to “Обсуждение плагинов”