Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[wlx/wdx] TCMediaInfo
Goto page Previous  1, 2, 3 ... 58, 59, 60 ... 63, 64, 65  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 325

Post (Separately) Posted: Tue Nov 05, 2024 07:04    Post subject: Reply with quote

Вообще, математический расчет времени, по моему мнению, должен быть по правилам математического округления, то есть в экселе такой (скопировать и вставить в эксель в A1):
Code:
119400
=ОКРУГЛ(A1/1000;0)
=ЦЕЛОЕ(A2/3600)
=ЦЕЛОЕ(A2/60)-A3*60
=A2-A3*3600-A4*60

119600
=ОКРУГЛ(A7/1000;0)
=ЦЕЛОЕ(A8/3600)
=ЦЕЛОЕ(A8/60)-A9*60
=A8-A9*3600-A10*60

По порядку: вначале округляем миллисекунды в секунды (до целых), далее получаем часы, минуты и секунды. Разный расчет может быть только на этапе округления (в самом начале), Думаю, тут только по правилам математики нужно, остальные отбрасывания или округлвверх дадут не совсем верные варианты.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1244

Post (Separately) Posted: Tue Nov 05, 2024 11:17    Post subject: Reply with quote

AkulaBig
Это всё общие/гипотетические рассуждения Wink Покажите пример, когда получение часов, минут и секунд из миллисекунд дадут более точный результат, чем получение секунд и уже из секунд - часов и минут.
Ну и про Unix-time давайте не забывать, там секунды и горя не знают.

Monarch-LFV
Это всё понятно, тут дело в другом, как понимаю: учитывать миллисекунды и округлять или же отбрасывать их. Какие-то программы идут по первому пути, какие-то по второму, что вносит некоторую путаницу: во втором случае всегда знаешь, что у тебя может быть ещё чуток длины, а во втором может быть больше, а может быть и меньше. Фиг знает, насколько длина плюс/минус секунда критична...

Loopback, собственно, принял компромисное решение
Loopback wrote:
Верну исходный вариант с обрезкой по умолчанию и добавлю опцию, как округлять. Кому под вывод какой программы нужно подгонять - пусть и меняет...

или терпит Smile)
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1530

Post (Separately) Posted: Tue Nov 05, 2024 11:53    Post subject: Reply with quote

Skif_off wrote:
Это всё понятно, тут дело в другом, как понимаю: учитывать миллисекунды и округлять или же отбрасывать их. Какие-то программы идут по первому пути, какие-то по второму, что вносит некоторую путаницу: во втором случае всегда знаешь, что у тебя может быть ещё чуток длины, а во втором может быть больше, а может быть и меньше.

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

В любом случае, просто сделаю метод округления опциональным.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 783

Post (Separately) Posted: Tue Nov 05, 2024 12:29    Post subject: Reply with quote

AkulaBig wrote:
Неудачный пример получился. foobar в свойствах показывает только с миллисекундами. Я другого вида отображения и в стандартной версии не нашел. А в линейке показывает округленный до секунда. И вопрос остается.

Наоборот, удачный пример, как раз то, что нам нужно. Smile В списке воспроизведения foobar2000 округляет до секунды, а в свойствах файла - показывает точную информацию о времени без округления:
Quote:
Donna Summer - I Feel Love (Extended Mix) 8:17
-
Duration : 8:16.524 (21 896 687 samples)

Поскольку Sample rate = 44100 Hz (сэмплов в секуду), берем 21896687 и делим на 44100. Получаем 496,52351473922902494331065759637, т.е. 496 секунд (8 минут, 16 секунд) и остаток, который округлился до 524 миллисекунд.

Что с этим остатком делать? Да что хотите, то с ним и делаете - вам решать Laughing

Лирическое отступление:

Меня сейчас больше интересует другое. Если открыть этот файл в плагине TCMediaInfo, то получается Duration, hh:mm:ss.fff = 00:08:16.526. Разница в две единицы! (О, ужас ужасный! Laughing) Сначала не понял. Глянул в MediaInfo, а там есть такая строчка - Frame rate: 38.281 FPS (1152 SPF). Перемножаем 38281 × 1152 = 44 099 712. Т.е. 44099,712 сэмплов в секунду. Делим общее количество сэмплов 21896687 на 44099,712 и получаем 496,52675736295057890627494347355

Вывод:

Короче, чувствую, что занимаюсь чем-то не тем. А вы уверены, что оно вам надо? Laughing

Добавлено спустя 19 минут:

Да, забыл написать, что MediaInfo показывает:

Code:
Format                                   : MPEG Audio
File size                                : 18.9 MiB
Duration                                 : 8 min 16 s
Overall bit rate mode                    : Constant
Overall bit rate                         : 320 kb/s
Track name                               : I Feel Love (Extended Mix)
Track name/Position                      : 01
Performer                                : Donna Summer


Audio
Format                                   : MPEG Audio
Format version                           : Version 1
Format profile                           : Layer 3
Format settings                          : Joint stereo
Duration                                 : 8 min 16 s
Bit rate mode                            : Constant
Bit rate                                 : 320 kb/s
Channel(s)                               : 2 channels
Sampling rate                            : 44.1 kHz
Frame rate                               : 38.281 FPS (1152 SPF)
Compression mode                         : Lossy
Stream size                              : 18.9 MiB (100%)

Т.е. без округления, что еще раз подчеркивает разницу в предпочтениях. Имхо, это даже хорошо, потому что видя эту разницу в разных местах (проигрывателях, свойствах файла и т.д.) сразу можно понять, что у этого файла есть спорный остаток.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Tue Nov 05, 2024 16:18    Post subject: Reply with quote

Orion9 wrote:

Поскольку Sample rate = 44100 Hz (сэмплов в секуду), берем 21896687 и делим на 44100. Получаем 496,52351473922902494331065759637, т.е. 496 секунд (8 минут, 16 секунд) и остаток, который округлился до 524 миллисекунд.

Познавательный пост у вас получился. Я со своей стороны тоже поразбирался и вот что получается.
Основная фишка в том, что секунды, в отличии от часов и минут, могут быть дробными. Поэтому единственно правильный формат продолжительности 11:11:11.111. Очень удобный онлайн-преобразователь для этого https://www.convert-me.com/ru/convert/time/millisecond/millisecond-to-dhms.html?u=millisecond&v=247532

Как видно на скрине. На преобразователе есть кнопочка, которой можно выбрать количество значащих цифр. И при значащей цифре 1 мы получаем округленные секунды. Это округление сделано по законам математики и по другому быть не должно. То-есть TCMediaInfo 1.1.0.2 показывает продолжительность совершенно правильно.
А дальше пошла жарешка. Свойства Windows показывает неправильно, MediaInfo показывает неправильно. Да плюс к этому есть еще проблема разных форматов. То-есть понятно, что в Винде нет кодеков для для ogg, opus и я не могу посмотреть свойства в чистой Винде. А вот при установке К-Lite Codec Pack свойства показываются и они НЕ совпадают с TCMediaInfo:

Так что я предлагаю смириться. Пользоваться исходной TCMediaInfo 1.1.0. Только попрошу разобраться с отображением колонок и русификацией.
Себе я сделал кастомную колонку hh:mm:ss с округлением секунд. Думаю она будет полезной. Файл TCMediaInfo.xml все по той-же ссылке.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 783

Post (Separately) Posted: Tue Nov 05, 2024 19:15    Post subject: Reply with quote

AkulaBig
Если вам интересно, то можете как-нибудь почитать о том, как оцифровывают и кодируют звук. Помню, несколько лет назад я немного окунулся в эту тему, пытаясь понять, как работает ReplayGain и почему при его использовании (или использовании MP3Gain) не происходит потери качества. Но что-то лезть в эти дебри меня больше как-то не тянет Smile

Хотел найти ту статью, которую я тогда читал, но так и не нашел. Но было что-то примерно этого (если кому-то интересно):
https://habr.com/ru/articles/503786/
https://habr.com/ru/articles/103635/

А холивар на счет последней секунды нет смысла устриавать - пусть большие дядьки сами там решают. Laughing Как по мне, то в последней секунде все-равно ничего интересного не бывает Mr. Green
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Tue Nov 05, 2024 20:05    Post subject: Reply with quote

Orion9 wrote:

Если вам интересно, то можете как-нибудь почитать о том, как оцифровывают и кодируют звук.

Меня интересует одинаковое отображение параметров для всех программ и типов файлов, но не получится.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 783

Post (Separately) Posted: Wed Nov 06, 2024 12:01    Post subject: Reply with quote

AkulaBig wrote:
Меня интересует одинаковое отображение параметров для всех программ и типов файлов, но не получится.

Вынужден согласиться - не получится. Это же типичный холивар "с какого конца яйцо лучше бить". Нет здесь хорошего и правильного решения. Округлишь в большую сторону - добавишь несуществующие миллисекунды. Округлишь в меньшую - потеряешь существующие миллисекунды. Обрежешь до целого - еще больше потеряешь миллисекунды. На этой дилемме ведь не один чип может сгореть Laughing Хотя это смотря какой чип ) Надо будет у Алисы спросить, что она на этот счет думает Mr. Green

 P.S.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Wed Nov 06, 2024 13:21    Post subject: Reply with quote

Orion9 wrote:

Вынужден согласиться - не получится. Это же типичный холивар "с какого конца яйцо лучше бить".

Вы меня не поняли. Дело не в этом. Я выше писал, что файлы ogg и opus (возможно и другие, я пишу только про которые я тестировал) показывают продолжительность в Вин Свойства другие значения. То-есть если настроить, чтобы mp3 отображались правильно, то эти расширения показываются неправильно. И наоборот. То-есть невозможно настроить, чтобы все расширения показывались в одном стиле.

Добавлено спустя 6 минут:

А вообще может все-же мы чего-то до конца не понимаем. Я очень сомневаюсь, что мелко-мягкие используют неправильный алгоритм. Но, конечно, это дискуссионный вопрос.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 783

Post (Separately) Posted: Thu Nov 07, 2024 00:17    Post subject: Reply with quote

AkulaBig wrote:
Вы меня не поняли. Дело не в этом. Я выше писал, что файлы ogg и opus (возможно и другие, я пишу только про которые я тестировал) показывают продолжительность в Вин Свойства другие значения. То-есть если настроить, чтобы mp3 отображались правильно, то эти расширения показываются неправильно. И наоборот. То-есть невозможно настроить, чтобы все расширения показывались в одном стиле.

Я и правда ничего не понял Laughing

Но если у вас много коротких аудио (видео) файлов, где последняя секунда играет какую-то роль, то можно сделать дополнительный набор колонок, где миллисекунды будут вынесены в отдельный соседний ряд либо будут отображаться как-то по-другому. Можно сделать еще подсветку файлов в обычном наборе, т.е. раскрасить файлы, у которых > 500 миллисекунд в остатке.

В общем, есть варианты )
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1244

Post (Separately) Posted: Thu Nov 07, 2024 02:30    Post subject: Reply with quote

AkulaBig wrote:
Свойства Windows показывает неправильно, MediaInfo показывает неправильно. ... чтобы mp3 отображались правильно

Не бывает "правильно" или "неправильно", есть два подхода: одни приложения традиционно отбрасывают миллисекунды, другие традиционно округляют.
Если найдёте пример программы, которая округляет, например, по десятой доле секунды, отбрасывая сотые и тысячные, тогда можно поговорить о "неправильно".

P.S. MediaInfo и как минимум WinXP выкатили плюс/минус 20 лет назад и вряд ли регулярно переделывали туда-сюда отображение длятельности, тут либо сделать как удобнее для себя в файловом менеджере, либо смириться стойко и мужественно переносить суровую реальность бытия, либо писать письма в Спортлото MediaArea и MS.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 783

Post (Separately) Posted: Thu Nov 07, 2024 12:47    Post subject: Reply with quote

Quote:
Я очень сомневаюсь, что мелко-мягкие используют неправильный алгоритм.

Ну, на мелко-мягких я ориентироваться не стал бы. У них расширение файла в Проводнике не показывается по-умолчанию, а вы хотите, чтобы они миллисекунды в свойствах файла отображали что ли? Laughing

Ну вот открыл сейчас вкладку "Подробно", а там продолжительность - 0:08:16. Ну как же так? Взяли и съели 524 миллисекунды. А ведь это целых 23108 сэмплов! А у меня, между прочим, каждый сэмпл на счету Mr. Green

MPC-BE - 0:08:17
MPC-HC - 0:08:16
foobar2k - 0:08:17
PotPlayer - 0:08:16
ExifTool - 0:08:17 (approx)
MMedia - 496 seconds (8:16)
Mp3Tag -0:08:17

Можно продолжать и продолжать... "Округлить нельзя обрезать", - подумал Гулливер, вставляя запятую Mr. Green
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Thu Nov 07, 2024 13:56    Post subject: Reply with quote

Orion9 wrote:
Я и правда ничего не понял Laughing



Добавлено спустя 10 минут:

Skif_off wrote:
Не бывает "правильно" или "неправильно", есть два подхода

Не бывает разных подходов в алгебре. Алгебра построена на аксиомах, а не на теоремах.
Skif_off wrote:

Если найдёте пример программы, которая округляет, например, по десятой доле секунды, отбрасывая сотые и тысячные, тогда можно поговорить о "неправильно".

Я выше выложил калькулятор. Выбирайте там понравившееся значимое число и увидите результат. Он всегда округляется.
И я-бы настаивал на правильном варианте, если-бы файлы ogg и opus не показывали другие значения. То-есть нельзя выбрать один правильный вариант.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 783

Post (Separately) Posted: Thu Nov 07, 2024 19:36    Post subject: Reply with quote

AkulaBig, теперь понял. Как сейчас модно говорить: для форматов opus и ogg мелко-мягкие использую бодипозитивный таймпозитивный подход Laughing

То, что у них в рамках одной задачи нет единого подхода "что делать с остатком миллисекунд", только добавляет в холивар. Но даже если такой поход и существовал, эталоном он не стал бы. Имхо, все-равно нашлись бы программы, которые по-своему округляли или обрезали этот остаток.

Я сконвертировал вышеуказанный mp3 в ogg и opus - как все программы показывали по-своему, так и показывают. И это не смотря на то, что количество сэмплов изменилось в большую сторону.

mp3 - 8:16.524 (21 896 687 samples)
ogg -8:16.941 (21 915 119 samples)
opus - 8:16.941 (23 853 191 samples)

Что конкретно происходит при конвертации, разбираться не хочется. Но что касается отображения, то, возможно, в списке воспроизведения проигрывателей и есть смысл округлять остаток для удобства пользователей, которым, как правило, не нужна никакая точность. Но такие программы, как MediaInfo, должны уметь раскладывать все по полочкам с максимальным объемом информации - секунды, миллисекунды, сэмплы, фреймы и т.д. - что они и делают. А формат вывода остается за пользователем.

Только выбор, как оказалось, этот не такой простой Laughing
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1530

Post (Separately) Posted: Thu Nov 07, 2024 19:38    Post subject: Reply with quote

Добавил опцию TimingRounding, управляющую округлением в TimingFormat. Три варианта, крути-верти Smile

Значения: 0 - метод по умолчанию (округляет до меньшего, как в MediaInfo), 1 - округление до ближайшего, 2 - округление до большего (ну мало ли кому и такое понадобится). Такие же значения можно передавать напрямую в TimingFormat третьим параметром. В общем, всё есть в приложенной или онлайн справке.

Если будет время покопаться в конфиге, через пару недель выложу на wincmd.ru.

Версия от 07.11.24
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 58, 59, 60 ... 63, 64, 65  Next
Page 59 of 65

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group