Звук: запись с микрофона, передача по сети, прослушивание в реальном времени.

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

29 ноя 2007, 10:06

somewhere писал(а):Есть еще один супер-мега-кодек DSP TrueSpeech - но все же лучше в MP3 конечно или Ogg Vorbis. Скорость кодирования/декодирования звука с такими параметрами в любом кодеке настолько высока, что даже на 486 DX-4 100 загрузка составляла около 15% при декодировании MP3 22kHz mono, что уж говорить о современных системах... параметр скорости не критичен, критичен размер файла.
А что скажете про Speex? Пишут, что для разговорного звука весьма хорош.
Правда, у меня почему-то acmFormatChoose (если указать поле ст-ры ACMFORMATCHOOSE fdwEnum = ACM_FORMATENUMF_CONVERT) не выдает в списке.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

29 ноя 2007, 10:12

Про speex не знаю, но с учетом сильного развития вейвлетного преобразования и специфики (именно голос, звуки, тона) не сомневаюсь что он лучше остальных. Может он зарегистрирован как медиа-фильтр, а не как кодек? А вообще стоит ли париться, ибо в MP3 с битрейтом 12кбит/сек, 8000Гц, моно - выйдет около 1,5 кб/сек или около 120 мб/сутки. Одного DVD диска хватит аж на 40 дней
It's a long way to the top if you wanna rock'n'roll
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

29 ноя 2007, 10:55

somewhere писал(а):Про speex не знаю, но с учетом сильного развития вейвлетного преобразования и специфики (именно голос, звуки, тона) не сомневаюсь что он лучше остальных. Может он зарегистрирован как медиа-фильтр, а не как кодек? А вообще стоит ли париться...
Да пока не парюсь, но интересно же.

Нет, вроде как кодек. Если при запуске acmFormatChoose указать fdwEnum = 0, то Speex появляется в списке форматов.

acmFormatSuggest также не хочет выдавать speex-овский формат для преобразования из PCM. Причем код ошибки возвращает MMSYSERR_INVALPARAM.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

03 дек 2007, 09:41

Насчет online прослушивания с другого компьютера у нчальства возникла следующая идея. Использовать для прослушивания какой-либо "стандартное" (т.е. не самописный) средство. Например, WinAmp, Media Player, Quick Time Player ...
Идея в следюущем. Вроде как (сам я WinAmp-ом, так сложилось, не пользуюсь :) ) говорят, что есть в WinAmp-е указать соответсвующий URL (что-то вроде *.m3u), то он начнет качать и воспроизводить потоковое видео. Так вот, идея в том, что подобным образом подключаться к компу, на котором стоит [самодельная] программа зависи с микрофона и соответствующей online-передачи. То есть, в таком случае нужно самому организовать поддержку подобной передачи (чтобы WinAmp на другом конце ее понял и принял).
Вопрос. Известен ли протокол (ил что там есть), по которому в этом случае работает WinAmp или какой-либо другой плеер, который подходит под характеристику "стандартный".

Или это как раз надо рыть в сторону RTP и RTSP? Еще пишут, что потоковое видео можно через по HTTP передавать, и плейера это тоже поддерживают (например, такое про QuickTime v.7.1.3 прочитал)
Hawk
Сообщения: 215
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

17 дек 2007, 12:02

По идее WinAmp-у передают как-бы обычный mp3 файл по HTTP. *.m3u - это текстовый файл в котором лежит обычный http линк. Формат mp3 позволяет проигрывать не полностью закаченный файл, по этому можно его качать и играть одновременно. Вот все плееры этим и пользуются. И многие радиостанции именно так и вещают в интернет. Но проиграть это одно, а вот генерировать его на сервере это совсем другое дело. Я не в курсе как это точно делается, но думаю тут для каждого клиента надо как бы создавать свой mp3 файл (т.е. заголовок + данные с текущего времени) либо в памяти, либо какой-то временный файл на диске. И отдавать его по HTTP.
Более сложные streaming протоколы нужны в основном для видео, и по моему не стоит этим сильно заморачиваться в твоем случае.
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

25 янв 2008, 16:40

Как я думаю, самому с ноля тяжеловато будет написать достаточно качественный медиастриминг за короткое время. Лучше это сделать на базе какого-нибудь фирменного движка. Ну например, QuickTime SDK от компании Apple. Там как раз всё это уже есть.
http://developer.apple.com/quicktime/

А ещё круче было бы сделать это на базе Microsoft DirectPlay и DirectSound. Тогда можно организовать двустороннюю связь в режиме full-duplex.
DirectPlay как раз поддерживает возможность передачи голосовых данных по сети, включая их компрессию/декомпрессию.
А если ещё DirectShow использовать, то вообще можно будет сетевую видеоконференцию сделать.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

28 янв 2008, 10:52

WinMain писал(а):А если ещё DirectShow использовать, то вообще можно будет сетевую видеоконференцию сделать.
О! Видеоконференция - это уже пройденный этап! :) В том смысле, что возникла было некоторое время назад написать самодельную упрощенную (т.е. под собственные нужды) видеоконференцию. Но вовремя одумались и решили использовать готовые решения, софт Polycom + Avaya.

Аудиоконференция (т.е. двухсторонняя передача звука) в рашаемой задаче тоже не нужна. Нужна именно запись происходящего с последующим, скажем так, складированием в архив. Плюс возможность онлайн подключения и прослушивания.

Вообще говоря, написать такие простейшие передатчик и приемник не так уж и сложно. Даже был найден Delphi-компонент WaveAudio, в частности, с классами LiveAudioPlayer и LiveAudioRecoder. С прилахающимися примерами, реализующими Broadcaster и Receiver. Broadcaster снимает звук с микрофона и, являясь сервером, слушает возможные подключения Receiver-а. Receiver по IP усанавливает связь с Broadcaster-ом, тот первым делом передет заголовок в виде структуры WAVEFORMATEX, а затем гонит аудиопоток, снятый с микрофона (в некомпресованном виде, правда, т.е. в WAVE_FORMAT_PCM).

Собственно, некий вариант решения уже был (на основе, опять-таки, готового разработанного софта). Задумка его в бОльше или меньшей степени переделать (заменить на самописный), чтобы иметь больше возможностей для маневра и управления процессом.

Имеющийся вариант состоит в следующем. На компе, ведущем звукозапись запущены программы IceCast и OddCast. OddCast пишет звук с микрофона и, установив socket-соединение с IceCast, передает ему аудиопоток (в формате AAC). IceCast выполняет роль радиостанции. Желающий послушать онлайн запускает WinAmp и указывает в нем для воспроизведения URL вида
http://<IP_IceCast-а>:8000/stream.acc
и слушает. Правда, как показали наблюдения, этотонлайн идет с задержкой порядка 15 секунд от реального времени :)

Формат передачи аудиопотока от OddCast к IceCast был легко установлен методом нежного взгляда и использования анализатора Ethereal . Хотя, может это где-то и так описано и документировано. Т.е. на данный момент, как будто, решено лишь подменить OddCast самописной программой, которая снимает звук с микрофона, в таком же, что и OddCast, виде шлет аудиопоток на IceCast, и в нужном для нас виде "архивирует" снятый с микрофона звук.
Britesk
Сообщения: 0
Зарегистрирован: 22 мар 2017, 11:58

23 мар 2017, 11:14

acme и mio? вы серьезно? Зачем вам эти устаревшие форматы, тем более, что далеко не каждый декодер распознает их! Я давно пользуюсь Audio Cap (тут скачать можете), и горя не знаю! Те-канальная запись, а больше и не надо, четкое подавление шумов и понятная подстройка микшера - песня!
Ответить