Russian Qt Forum
Ноябрь 22, 2024, 16:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Информация о проигрываемом(с помощью любого плеера) треке  (Прочитано 7981 раз)
maygli_dn
Гость
« : Декабрь 24, 2012, 22:52 »

Здравствуйте
Меня интересует следующее: как я могу узнать название песни(ну и вообще все о ней), если она проигрывается например в плеере WindowsMedia?
То есть, например я хочу составить список песен, прозвучавших на моем компьетере, за определенный промежуток времени.
Что использовать? Насколько я понимаю Phonon тут не подойдет?
Записан
Bepec
Гость
« Ответ #1 : Декабрь 25, 2012, 00:09 »

Ы... Каждый плеер по разному предоставляет своё api. А некоторые и не предоставляют.
Нужно будет под каждый прописать свой плагин скажем так.
Записан
maygli_dn
Гость
« Ответ #2 : Декабрь 25, 2012, 13:22 »

А может быть можно брать информацию не из самого плеера? Может можно с какого-нибудь аудиокодека? Ведь наверняка))) можно
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Декабрь 25, 2012, 13:25 »

Практически любой плеер использует свои кодеки. Так что мимо кассы )
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Bepec
Гость
« Ответ #4 : Декабрь 25, 2012, 13:25 »

Угу. Один проигрывает wav, другой raw, третий играет по нотам, четвертый mpeg, пятый вообще фильм показывает в avi.

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

Записан
carrygun
Гость
« Ответ #5 : Декабрь 25, 2012, 13:35 »

Еще как вариант отслеживать "дерганье" файлов, но как ты будешь отличать кто, что и зачем дергает - я не знаю.
Записан
Bepec
Гость
« Ответ #6 : Декабрь 25, 2012, 13:52 »

Отличить кто дергает файл можно) Другой вопрос опять же нужно под каждый плеер писать Веселый
Записан
maygli_dn
Гость
« Ответ #7 : Декабрь 25, 2012, 14:57 »

То есть алгоритм может быть примерно такой:
1. Смотрю запущенный приложения
2. Нахожу среди них какой-нибудь плеер(если он там есть)
3. Возвращаю имя файла используемого этим плеером
Записан
Bepec
Гость
« Ответ #8 : Декабрь 25, 2012, 15:12 »

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

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

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

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

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

PS хватит? Показает язык А то меня чегой т понесло Веселый
« Последнее редактирование: Декабрь 25, 2012, 15:19 от Bepec » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #9 : Декабрь 25, 2012, 16:04 »

Если всё же вернуться к исходной задаче распознавания звучащей песни, то можно перехватить воспроизводимый звук, вычислить для него "отпечаток" и сравнить с базой данных по "отпечаткам". Такое реализовано у многих, но будут ли с тобой эти "многие" делиться своим API и своей базой - не знаю.
Записан
Bepec
Гость
« Ответ #10 : Декабрь 25, 2012, 16:48 »

Такая схема нуждается в централизованной базе Улыбающийся Причём на очень нехилом оборудовании.
Да, есть такие сервисы Улыбающийся Хотя не все песни опознают.
Записан
maygli_dn
Гость
« Ответ #11 : Декабрь 25, 2012, 19:04 »

Чересчур,спасибо за вдохновение))) и все же что вы мне можете посоветовать, вариант с отпечатками кажется мне очень сложным. Вот интересно еще как радиостанции это реализовано, то есть вот играет на радио какая-то песня а у них на сайте отображается какая.
Записан
maygli_dn
Гость
« Ответ #12 : Декабрь 26, 2012, 00:36 »

Еще раз Здравствуйте)
Вот нашел я вот это AMIP Now Playing Plugin и не знаю как этим воспользоваться,
то есть как сделать так чтобы, названия воспроизводимых песен брались с его помощью
и записывались ну например просто в файл track_list.
Подскажите пжлст.
Записан
Bepec
Гость
« Ответ #13 : Декабрь 26, 2012, 06:56 »

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

Цитировать
нашёл плагин, что делать
Читать по нему документацию.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 22.