Страница: 1 | 2 |
Ну если ты делаешь слушалку (всмысле принимаешь входящий сигнал) так как думаю я (это через чистое АПИ, как я понял ставишь хук на входящий сигнал и по хукному событию вскрываешь масиив, работающий как буфер), то всё просто - сохраняй массив. Только вот занимать такой звук будет - мама не горюй, поэтому, имхо, лучше сразу перекидывать по сети. Я по ходу думал сделать прогу, с помощью которой можно было бы при игре в Unreal переговариваться через наушники и микрофон (всмысле людям в разных комнатах), но потом охладел к стрелялкам. Но по-моему это вполне возможно... Таких программ тьма, поэтому это, конечно, вполне возможно. Вообщем на форме 2 кнопики Command1 and Command2, вот код: Sub CloseSound() Sub RecordSound() Sub PlayRecSound() Private Sub Command1_Click() Private Sub Command2_Click() Private Sub Form_Unload(Cancel As Integer) ------------------------------------------------------------------- И маленький модуль: Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long И как с этой штукой работать - просто НЕЗНАЮ Зачем его сохранять, если это строка? Судя по всему, ReturnString используется как для записи, так и для воспроизведения звука, попробуй тупо передавать ее через сокет на другой комп, а тот пусть воспроизводит. Только я не знаю, как заставить сокет передавать данные без пауз, чтобы сообщение можно было нормально прослушать, без глюков. Положись на протокол TCP/IP. Если будут паузы, просто уменьши битрейт.
Вопрос: М И К Р О Ф О Н !!!
Добавлено: 04.05.04 02:04
Автор вопроса: HACKER
Нужно короче говорилку сетевую, есть у меня примерчик как говорить и слушать, но не больше, он даже сохранить неумеет, а мне ещё и по локалки звук передать, вообщем давайте советы и исходники!
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #1
Добавлено: 04.05.04 21:35
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 08.05.04 10:39
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 08.05.04 16:49
А там исходников не у кого не валяется? В инете смотрел везде, вроде нету, есть только то что я уже говорил, щас исходин той штуки выложу...
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 08.05.04 16:52
Dim Result&
Dim errormsg%
Dim ReturnString As String * 1024
Dim ErrorString As String * 1024
Result& = mciSendString("close mysound", ReturnString, 1024, 0)
End Sub
'записать звук с микрофона (6 сек.)
Dim Result&
Dim errormsg%
Dim ReturnString As String * 1024
Dim ErrorString As String * 1024
CloseSound
Result& = mciSendString("open new type waveaudio alias mysound", ReturnString, 1024, 0)
If Not Result& = 0 Then
errormsg% = mciGetErrorString(Result&, ErrorString, 1024)
MsgBox ErrorString, 0, "Error"
Exit Sub
End If
Result& = mciSendString("set mysound time format ms bitspersample 8 samplespersec 11025", ReturnString, 1024, 0)
If Not Result& = 0 Then
errormsg% = mciGetErrorString(Result&, ErrorString, 1024)
MsgBox ErrorString, 0, "Error"
Exit Sub
End If
Result& = mciSendString("record mysound to 60000", ReturnString, 1024, 0)
If Not Result& = 0 Then
errormsg% = mciGetErrorString(Result&, ErrorString, 1024)
MsgBox ErrorString, 0, "Error"
Exit Sub
End If
End Sub
Dim Result&
Dim errormsg%
Dim ReturnString As String * 1024
Dim ErrorString As String * 1024
Result& = mciSendString("stop mysound", ReturnString, 1024, 0)
If Not Result& = 0 Then
errormsg% = mciGetErrorString(Result&, ErrorString, 1024)
MsgBox ErrorString, 0, "Error"
End If
Result& = mciSendString("play mysound from 1 wait", ReturnString, 1024, 0)
If Not Result& = 0 Then
errormsg% = mciGetErrorString(Result&, ErrorString, 1024)
MsgBox ErrorString, 0, "Error"
End If
End Sub
RecordSound
End Sub
Call PlayRecSound
End Sub
CloseSound
End Sub
Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long
-------------------------------------------------------
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 08.05.04 16:58
то что оно пишет в буфер, а потом из него читает, это понятно, непонятно как етот буфер сохранить для передачи по локалки
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 08.05.04 17:53
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 09.05.04 15:56
ну если ты незнаешь, откуда я могу знать. Хотя по идеи во всех подобных прогах, всётаки пауза есть, только она очень маленькая, пол секунды где-то. т.е. пока тот комп говорит те пол секунда, другой пишет, потом опять тот комп говорит, а тот пишет, короче вроде буфера
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 09.05.04 16:33
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 09.05.04 20:27
тоже сказал!!!!! Тут бы хоть сохранить записанное, та и битрейт я тоже незнаю как уменшить
Номер ответа: 10
Автор ответа:
PeterS
Вопросов: 24
Ответов: 109
Профиль | | #10
Добавлено: 06.06.04 22:54
Давайте продолжим про МИКРОФОН в сеть.
Я так думаю что необходимо с помощью кода
данные с микрофона в реальном времени
посылать прямо в сеть (WinSock.SendData strData).
Нам нужен код, например такой, который бы записывал данные с микрофона и сразу же их воспроизводил на звуковую карту, тогда его можно будет переделать под нашу задачу.
Поищите кто-нибудь такой пример.
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 06.06.04 23:38
> Result& = mciSendString("play mysound from 1 wait", ReturnString, 1024, 0)
Это разве не то?
Номер ответа: 12
Автор ответа:
PeterS
Вопросов: 24
Ответов: 109
Профиль | | #12
Добавлено: 06.06.04 23:44
Нет не то. Это же уже воспроизведение записи, а надо так, чтобы данные с микрофона уходили прямо в сеть.
Номер ответа: 13
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #13
Добавлено: 07.06.04 03:21
Что тебе мешает послать эту строку в сеть, а на другом компе ее же и воспроизвести таким образом?
Номер ответа: 14
Автор ответа:
SeMa
ICQ: 166433794
Вопросов: 9
Ответов: 143
Профиль | | #14
Добавлено: 07.06.04 11:30
Для такой проги нужно еще ACM юзнуть чтоб компресануть, а то сеть офигеет от такой говрилки
Номер ответа: 15
Автор ответа:
PeterS
Вопросов: 24
Ответов: 109
Профиль | | #15
Добавлено: 07.06.04 12:41
Что мешает Sharp? А вот то что эта строка не завершится пока не закончится запись. Ну, теперь
сами мозгами пораскиньте, тоже мне нашёлся ....
2 SeMa: лучше бы не упоминали без примера, а то от этого ещё хуже становиться.....
А лучше прикинете пример из выше описанного кода с включением WinSock, и проверьте, если нет сети, то пришлите, у кого она есть.