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

Здесь можно обсудить ваш любимый плагин.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

Latest post of the previous page:

2useven10 wrote: Fri 10 Oct, 2025 21:24 сделал загрузку в память полностью и открытие из буфера
На всякий случай отмечу, что видеофайлы на сотни гигабайтов совсем не редкость. И во многих форматах видео метаданные располагаются в конце файла или размазаны по файлу.
Это я к тому, что для подобных файлов подход с зачитыванием в память работать будет плохо — либо крайне долго (при полном считывании), либо некорректно (при частичном считывании).
P.S. С другой стороны, если сделать memory-mapped file и скармливать движку уже такую память, то это должно сработать в т.ч. для огромных файлов.
Last edited by HaRT on Fri 10 Oct, 2025 22:18, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

HaRT,
1) Там сразу добавлены ограничения - не больше ~ 4G и половины свободной памяти.
2) Для x86 мапирование не поможет.
3) В принципе можно ещё делать попытку открыть в ACP (CreateFileA).
4) Полезность Exiv2 как такового вызывает у меня сомнения. Помимо студенческих выкрутасов с UTF16, в своё время пришлось отключить открытие через него нескольких видов как раз видеофайлов (.mkv в частности) - тупо подвисал или падал. Может и поправлено, проверять никакого желания нет.
Last edited by 2useven10 on Sat 11 Oct, 2025 01:53, edited 3 times in total.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

2useven10 wrote: Sat 11 Oct, 2025 00:42 Там сразу добавлены ограничения - не больше ~ 4G и половины свободной памяти
Можно было бы оставить этот подход только для файлов с «плохими»­­ путями, а файлы с «хорошими»­­ путями по-прежнему отдавать на чтение самому движку. Это позволило бы решительно снизить частоту случаев, когда приходится зачитывать файл в память.
2useven10 wrote: Sat 11 Oct, 2025 00:42 Для x86 мапирование не поможет
Если я правильно понимаю, оно всё же позволяет не считывать в память те части файла (с гранулярностью в размер страницы виртуальной памяти), к которым не было фактических обращений. Всё-таки зачитать в память 4 GB с HDD — это довольно долго.
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

Допилил...
Если путь 'хороший' filename == Unicode(Ansi(filename)) будет открытие Exiv2 по Ansi(filename).
Если плохой -- загрузка в память (до 1ГБ, если больше игнор) и открытие из буфера.
Last edited by 2useven10 on Sat 11 Oct, 2025 23:18, edited 1 time in total.
qqqwww30
Posts: 2
Joined: Tue 12 May, 2026 15:01

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

Post by qqqwww30 »

добрый.
а возможно ль допилить ее или чтото сделать так чтобы с ее помощью в фаре показывались продолжительности медиа файлов прямо в панелях?
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

HaRT wrote: Sat 11 Oct, 2025 01:31 Всё-таки зачитать в память 4 GB с HDD — это довольно долго.
А для маппирования 4GB в x86 просто нет достаточного адресного пространства.
Если мапить кусками - это ничем не проще ручного вычитывания этих кусков из файла.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

2useven10 wrote: Tue 12 May, 2026 19:57 для маппирования 4GB в x86 просто нет достаточного адресного пространства
Так ведь вроде у вас там всё равно
2useven10 wrote: Sat 11 Oct, 2025 00:42 ограничения - не больше ~ 4G и половины свободной памяти
2useven10 wrote: Tue 12 May, 2026 19:57 мапить кусками - это ничем не проще
Верю, что с точки зрения программирования это так. Однако с точки зрения скорости работы всё же есть разница: ОС сама позаботится, чтобы не считывать неиспользуемые части файла.
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

HaRT, Нет у Exiv2 такого в интерфейсе.
Есть либо их кривой File, в котором выкинули wchar_t*, либо буфер (мап если подменить) в котором ВЕСЬ файл.
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

Для x64, ARM64 - да может быть оптимизация.
Но я не готов этим заниматься, пусть лучше школьники которые пилят Exiv2 вернут wchar_t* filename.
Но т.к. за где-то 3-4 года этого не произошло, шансов мало.
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

qqqwww30, У меня есть макрос, ЕМНИП от buniak_a_h, который показывает в кастомных колонках панели размеры изображения. Могу на его основе по аналогии сделать показ Duration.
Не знаю насколько это будет эффективно, появление кастомных колонок в фар я не отследил.
Вероятно это сделал Shmuel, я это помню только по упомянутому макросу.
Кроме того получение Duration из media файла через MediaInfo это не быстрая операция, фактически может потребоваться чтение всего файла.
Last edited by 2useven10 on Tue 12 May, 2026 22:27, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

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

Post by buniak_a_h »

2useven10 wrote: Tue 12 May, 2026 20:26 Могу на его основе по аналогии сделать показ Duration
Такой у меня тоже есть ;-)
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

buniak_a_h, Дайте ссылку на него для qqqwww30, желательно с инструкциями по настройке кастомных колонок.
qqqwww30
Posts: 2
Joined: Tue 12 May, 2026 15:01

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

Post by qqqwww30 »

2useven10 wrote: Tue 12 May, 2026 20:26 Не знаю насколько это будет эффективно, появление кастомных колонок в фар я не отследил.
во! спасибо мил человек - надоумил. а то я забыл что есть кастомизация колонок...

F9 - options - file panel modes - берем любой стандарт и редакитруем...

Column types Status line column types
N,S,D,T NR
Column widths Status line column widths
0,6,0,5 0

и что в 'Column types' поставить - непонятно.

гугловый ИИ предложил 2 варианта чтобы из плагина MediaInfo взять Duration:

N,S,D,F[MediaInfo]Duration
и
N,S,D,PMediaInfo:Duration

но оба после копи-паст исчезают - не принимаются фаром.
доки по этому нет нигде. в сорцах фара на гитхабе тоже пусто. просто полный пипец...
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

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

Post by buniak_a_h »

2useven10 wrote: Tue 12 May, 2026 22:26 Дайте ссылку на него
2useven10, qqqwww30, у меня ссылки нету, опубликую скрипт здесь (благо он небольшой)

Скрипт не оформлен и не закончен, но кое-какие данные (в т.ч. длительность трека) выводит.
Для работы скрипта надо:
  • поместить скрипт стандартно
  • настроить режим просмотра как в примере (XML-файл прилагается)
  • выбрать режим просмотра Media (F9 -> Options -> File panel modes -> выбрать Media -> Ctrl+Enter ->Esc)
Режим Media должен содержать столбец <Duration>.
Для удобства настройки режима прилагаю XML-файл с соответствующей настройкой. Можно загрузить её (far.exe /import <имя-файла>) и потом убрать лишнее.
Кажется, ничего не упустил…
2useven10
Posts: 5495
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

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

Post by 2useven10 »

Выглядит как перебор.
Достаточно оставить только Duration.
И соответственно в описании колонки писать <Duration>, можно редактировать существующие режимы или создать свой новый.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

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

Post by buniak_a_h »

buniak_a_h wrote: Wed 13 May, 2026 01:11 Кажется, ничего не упустил…
Забыл приложить XML …
MediaPanel.xml
(694 Bytes) Not downloaded yet
Post Reply

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