Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: М И К Р О Ф О Н !!! Добавлено: 04.05.04 02:04  

Автор вопроса:  HACKER
Нужно короче говорилку сетевую, есть у меня примерчик как говорить и слушать, но не больше, он даже сохранить неумеет, а мне ещё и по локалки звук передать, вообщем давайте советы и исходники!

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 1
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #1
Добавлено: 04.05.04 21:35

Ну если ты делаешь слушалку (всмысле принимаешь входящий сигнал) так как думаю я (это через чистое АПИ, как я понял ставишь хук на входящий сигнал и по хукному событию вскрываешь масиив, работающий как буфер), то всё просто - сохраняй массив. Только вот занимать такой звук будет - мама не горюй, поэтому, имхо, лучше сразу перекидывать по сети. Я по ходу думал сделать прогу, с помощью которой можно было бы при игре в Unreal переговариваться через наушники и микрофон (всмысле людям в разных комнатах), но потом охладел к стрелялкам.

Но по-моему это вполне возможно...

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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

Вообщем на форме 2 кнопики Command1 and Command2, вот код:

Sub CloseSound()
    Dim Result&
    Dim errormsg%
    Dim ReturnString As String * 1024
    Dim ErrorString As String * 1024
    Result& = mciSendString("close mysound", ReturnString, 1024, 0)
End Sub

Sub RecordSound()
'записать звук с микрофона (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

Sub PlayRecSound()
    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

Private Sub Command1_Click()
RecordSound
End Sub

Private Sub Command2_Click()
Call PlayRecSound
End Sub

Private Sub Form_Unload(Cancel As Integer)
CloseSound
End Sub

-------------------------------------------------------------------

И маленький модуль:

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
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-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 08.05.04 17:53

Зачем его сохранять, если это строка? Судя по всему, ReturnString используется как для записи, так и для воспроизведения звука, попробуй тупо передавать ее через сокет на другой комп, а тот пусть воспроизводит. Только я не знаю, как заставить сокет передавать данные без пауз, чтобы сообщение можно было нормально прослушать, без глюков.

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 09.05.04 15:56
ну если ты незнаешь, откуда я могу знать. Хотя по идеи во всех подобных прогах, всётаки пауза есть, только она очень маленькая, пол секунды где-то. т.е. пока тот комп говорит те пол секунда, другой пишет, потом опять тот комп говорит, а тот пишет, короче вроде буфера

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 09.05.04 16:33

Положись на протокол TCP/IP. Если будут паузы, просто уменьши битрейт.

Ответить

Номер ответа: 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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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, и проверьте, если нет сети, то пришлите, у кого она есть.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам