Здравствуйте, Stas Kmet, Вы писали:
SK>А хотелось бы поаккуратнее:
SK>на основе MP3-потока и обычных сокетов. Реально ли это?
SK>Приветствуются любые ссылки.
Вполне реально:
1. Получаешь звук из аудио устройства (там PCM)
2. Вызываешь через Audio Compression Manager кодек
3. Блок данных после кодека посылаешь (не забыв ему добавить
контрольную сумму) через сокеты по протоколу UDP — так будет
наиболее правильно и не криво
С другой стороны:
4. Принимаешь с помощью сокетов UDP датаграмму
5. Проверяешь, совпала ли контрольная сумма
6. Если контрольная сумма не совпала или пакет в заданное время
не пришел, то выкидываешь на выход блок белого шума со средней
громкостью, которую получаешь из предыдущего блока (чтобы не было
щелчков при пропадании пакетов)
7. Если блок пришел, вызываешь кодек для декодирования
8. Выкидываешь полученный блок в аудиоустройство
В этом алгоритме нехватает инициализаций и буфера пакетов (для IP
телефонии на 100 мс, для радио можно и на пару секунд, лишь бы
оно потом линейно выдавалось)
Это примерный алгоритм. Сам такую штуку писал несколько лет назад.
Понять как работает захват/выдача звука можно, например,
http://www.fortunecity.com/meltingpot/barnsbury/215/index.htm
компонент AudioIO
Как производится компрессия
Audio Compression Manager в MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/audcomp_3kc2.asp
Передача пакетов
Свой протокол, через UDP на основе sockets
Все вышеописанное работать будет не криво и в меру безглючно (в меру написания

если что-то еще надо могу подсказать
P.S. Так можно не только mp3, но и G723, G729 и т.д.
(все кодеки, установленные в системе)
... << RSDN@Home 1.0 beta 7a >>