Russian Qt Forum

Qt => Мультимедиа => Тема начата: maygli_dn от Декабрь 24, 2012, 22:52



Название: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: maygli_dn от Декабрь 24, 2012, 22:52
Здравствуйте
Меня интересует следующее: как я могу узнать название песни(ну и вообще все о ней), если она проигрывается например в плеере WindowsMedia?
То есть, например я хочу составить список песен, прозвучавших на моем компьетере, за определенный промежуток времени.
Что использовать? Насколько я понимаю Phonon тут не подойдет?


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Bepec от Декабрь 25, 2012, 00:09
Ы... Каждый плеер по разному предоставляет своё api. А некоторые и не предоставляют.
Нужно будет под каждый прописать свой плагин скажем так.


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: maygli_dn от Декабрь 25, 2012, 13:22
А может быть можно брать информацию не из самого плеера? Может можно с какого-нибудь аудиокодека? Ведь наверняка))) можно


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Kurles от Декабрь 25, 2012, 13:25
Практически любой плеер использует свои кодеки. Так что мимо кассы )


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Bepec от Декабрь 25, 2012, 13:25
Угу. Один проигрывает wav, другой raw, третий играет по нотам, четвертый mpeg, пятый вообще фильм показывает в avi.

Кул стори, Маугли. Максимум что ты можешь получить для всех разом - звук, который выводится с звуковой карты.



Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: carrygun от Декабрь 25, 2012, 13:35
Еще как вариант отслеживать "дерганье" файлов, но как ты будешь отличать кто, что и зачем дергает - я не знаю.


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Bepec от Декабрь 25, 2012, 13:52
Отличить кто дергает файл можно) Другой вопрос опять же нужно под каждый плеер писать :D


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: maygli_dn от Декабрь 25, 2012, 14:57
То есть алгоритм может быть примерно такой:
1. Смотрю запущенный приложения
2. Нахожу среди них какой-нибудь плеер(если он там есть)
3. Возвращаю имя файла используемого этим плеером


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Bepec от Декабрь 25, 2012, 15:12
Неправильно мыслишь. Плеер читает файл моментно в память, после чего его освобождает. Так поступает большинство.

Т.е. получается тебе придётся фильтровать постоянно всю файловую систему, перехватывать все обращения к файлам, мониторить список процессов опять таки постоянно, выискивать в нём намёки на плееры (хз как ты будешь это делать, я где то с сотню плееров тебе найду за минутку.), потом постоянно сравнивать разницу между заблокированными в текущий момент времени файлами и открытыми плеерами, причём отсекая простое получение названия и информации о файле от чтения файла. И в результате ты получишь примерно 60% ложных срабатываний, чувствительность к именам плееров, %50 ложных опознаний проигрывателей и примерно список в 0-(Ν-1) файлов ежесекундно. Ну и будешь выбирать из этого (Ν-1) списка тот файл, который по настоящему проигрывается.

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

Ты вдохновлён перспективами? Тогда я продолжу.

Теперь берём так же все Java/Net/Flash/Network технологии, которые проигрывают файл кусками его скачивая.
Добавляем так же туеву хучу спойлеров/реклам/спам-объявлений занимающихся тем же самым.
Добавляем игры, которые тоже проигрывают файлы.
Добавляем систему, которая Оо тоже проигрывает файлы.
Добавляем так же злостных антивирусов, которые тоже читают файлы и проверяют их.
Добавляем все программы аля ¨библиотеки музыки¨, которые аналогично шерстят диски в поисках музона.
Добавляем программы с оповещениями аля аська.
Добавляем потоковое вещание звука аля тим спик и вентра (правда я не изучал технологию, но они вроде тоже хранят данные на диске).

PS хватит? :P А то меня чегой т понесло :D


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: xokc от Декабрь 25, 2012, 16:04
Если всё же вернуться к исходной задаче распознавания звучащей песни, то можно перехватить воспроизводимый звук, вычислить для него "отпечаток" и сравнить с базой данных по "отпечаткам". Такое реализовано у многих, но будут ли с тобой эти "многие" делиться своим API и своей базой - не знаю.


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Bepec от Декабрь 25, 2012, 16:48
Такая схема нуждается в централизованной базе :) Причём на очень нехилом оборудовании.
Да, есть такие сервисы :) Хотя не все песни опознают.


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: maygli_dn от Декабрь 25, 2012, 19:04
Чересчур,спасибо за вдохновение))) и все же что вы мне можете посоветовать, вариант с отпечатками кажется мне очень сложным. Вот интересно еще как радиостанции это реализовано, то есть вот играет на радио какая-то песня а у них на сайте отображается какая.


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: maygli_dn от Декабрь 26, 2012, 00:36
Еще раз Здравствуйте)
Вот нашел я вот это AMIP Now Playing Plugin и не знаю как этим воспользоваться,
то есть как сделать так чтобы, названия воспроизводимых песен брались с его помощью
и записывались ну например просто в файл track_list.
Подскажите пжлст.


Название: Re: Информация о проигрываемом(с помощью любого плеера) треке
Отправлено: Bepec от Декабрь 26, 2012, 06:56
По порядку:
Цитировать
Вот интересно еще как радиостанции это реализовано
Там стоит специальная программко плеер, которая позволяет получить название проигрывающегося трека и даже всего плейлиста.
Проще выражаясь - предусмотрено конструкцией.

Цитировать
нашёл плагин, что делать
Читать по нему документацию.