Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.227.69] |
|
Сообщ.
#1
,
|
|
|
Уважаемые коллеги! Кто может подсказать решение? Вопрос в следующем. Есть некоторое (неопределенное) количество программ (не моих), каждая из которых что-то там воспроизводит. Надо из моей программы определить, звучит ли что-нибудь на компе в данный момент. Просто BOOL - да или нет. Язык C++ или Delphi. Долго искал в инете, не нашел. Помогите, люди добрые, если кто что знает по существу. Заранее спасибо все откликнувшимся.
|
Сообщ.
#2
,
|
|
|
Цитата звучит ли что-нибудь на компе в данный момент. Просто BOOL - да или нет. Решается записью звука с выхода звуковой карты(любым способом), вычислением уровня сигнала и принятием решения(того самого BOOL). Как узнать, звучат ли конкретные программы(какая из программ звучит в данный момент) - без понятия. |
Сообщ.
#3
,
|
|
|
Добавлю свою пару копеек:
Проверить надо все звуковые карты установленные на компьютере. Также надо проверить системную пишалку. |
Сообщ.
#4
,
|
|
|
Спасибо, но мне не надо знать, звучит ли конкретная программа. Мне надо знать, звучит ли комп вообще. Если можно, примерчик записи звука с выхода звуковой карты киньте, я с программированием мультимедиа раньше не сталкивался. Карта однозначно одна.
|
Сообщ.
#5
,
|
|
|
FFFFFFFFF1, вопросов типа "я раньше не сталкивался с програмированием мультимедиа, киньте примерчик записи(воспроизведения)", и подобных, на форуме не просто много, а очень много. Уж сколько тех примерчиков накидали, а вопросы не прекращаются.
Почитаете темы в этом разделе, воспользуетесь поиском, и вы их найдёте, уверяю. Загляните также в FAQ, есть книги по програмированию мультимедиа, с подробными объяснениями и примерами. |
Сообщ.
#6
,
|
|
|
Уважаемый Prince! Если мне нечего (или не хочется) отвечать, я оставляю свои нравоучения при себе, и просто не отвечаю. Я просил конкретной помощи у людей, которые разбираются в вопросе, а показать пальцем "вон там ищи" не требует большого опыта. Я на Вашем месте на любой вопрос отвечал бы с тяжелым вздохом "Ищи на форуме". Я повторяю свою просьбу (не для Принца) - если можете, дайте конкретный пример по теме. Если не можете - не пишите нравоучений. Заранее благодарю всех, кто может мне помочь.
|
Сообщ.
#7
,
|
|
|
Это было не вовсе не нравоучение, а настоящий добрый совет. Но как хотите.
|
Сообщ.
#8
,
|
|
|
Спасибо. Извините за резкость.
Добавлено Пожалуйста, помогите найти буфер аудиоданных. Код взят из реального примера рекордера. MCI_RECORD_PARMS mciRecord; DWORD dwrc; mciRecord.dwCallback = (DWORD)hwnd; if(bOpen) { mciRecord.dwFrom = iFileSize; dwrc = mciSendCommand(wDevID, MCI_RECORD, MCI_NOTIFY | MCI_FROM, (DWORD)(LPVOID)&mciRecord); } else { dwrc = mciSendCommand(wDevID, MCI_RECORD, MCI_NOTIFY, (DWORD)(LPVOID)&mciRecord); } if(dwrc) MCIError(dwrc); Я так понимаю, что используется внутренний буфер MCI. Мне надо его периодически опрашивать. Как мне до него добраться? |
Сообщ.
#9
,
|
|
|
Возможно, никак, хотя 100% гарантии дать не могу. MCI - это относительно высокоуровневая обертка, в частности, над API audio multimedia, заточенная для написания аудио/видео плееров/рекордеров.
А более низкоуровневые, с доступом к аудиоданным : audio multimedia - Работа со звуком с помощью MMSystem (последняя страница) DirectSound - Захват звука DirectSound Интерфейсы, как и MCI, старые, но 7-ой, конечно, продолжают поддерживаться. Ещё библиотеки BASS, PortAudio. И напоследок, CoreAudio в Win-7. Но это уже без меня. |
Сообщ.
#10
,
|
|
|
Спасибо, Prince. Еще раз извините за резкость.
|
Сообщ.
#11
,
|
|
|
Проехали. Просто уж столько раз эта инфа, на разные лады, в разных темах повторялась...но не все читают вопросы предшественников.
Формулы для расчёта уровня сигнала andriano приводил: Границы желтой и красной зон для логарифмической шкалы звука (VU Meter), Какие они?. А ещё вы столкнётесь(или не столкнётесь) с необходимостью управления линиями микшера из вашей программы. За это отвечают Audio Mixer Functions. Т.е., это в том случае, если вы остановитесь на "старых" виндовых интерфейсах, и [возможные,т.е., их может и не быть] подводные камни совместимости с 7-й или кроссплатформенность вас не волнует(с другой стороны, не будет проблем обратной совместимости, так как wavein и directsound будут фунциклировать на 7-ке, XP и 2000-й(мало ли)). Возможно, вам таки будет проще(или удобней, или целесообразней) воспользоваться BASS, в комплекте с библиотекой поставляются необходимые заголовочные файлы, кучка примеров на разные случаи жизни, на С , Асме и Delphi, есть справочный файл. |