Я здесь не для того, чтобы спамить или повторно задавать тот же вопрос, но на самом деле я не могу настроить какой-либо источник для запуска. Я хочу создать приложение для передачи звука с микрофона на ноутбуке или P C в реальном времени, как поток Youtube, но без видео. .. я покажу свой прогресс >> Сначала я передаю нормальный файл, конвертируя его в байт, а затем снова в исходное значение. Второй изменяю тип файла на MP3 или wav, затем использую NAudio. Работает нормально, также я могу воспроизвести файл, если он передан или при получении Третьего изменил входной файл на микрофон и получил звук. ВОТ ПРОБЛЕМА "NAudio не может поместить прямой поток с mi c, затем отправить его автоматически, всегда буфер дает мне исключение нулевого указателя во время отладки, а затем дает мне другую ошибку, которая декодирует NAudio не получил никаких данных, «кстати неприемлемых», он должен прослушивать или продолжать получать данные до тех пор, пока порт или соединение не закроются. Я пытался поискать любую библиотеку о VoIP, но не нашел ничего, кроме Ozeki, но не учебник по обработке и все, что я нашел, это старые видео не работает .. Я искал об этом более недели, но без результата. Мне не нужен полностью разработанный проект, потому что я нашел один, но он слишком сложен в отношении строчного кода 2K. Все, что мне нужно, что делать, или проблема с кодом, или и то, и другое .. это код на стороне клиента ..
public void client()
{
try
{
//byte[] send_data = Audio_to_byte(); // ORIGINAL WORK CODE
byte[] send_data = new byte [BufferSize]; // 100M buffer size
TcpClient client = new TcpClient(serverip, port);
NetworkStream stream = client.GetStream();
// sourceStream and wavein is global vars
sourceStream = new NAudio.Wave.WaveIn();
sourceStream.DeviceNumber = 1;
sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(1).Channels);
wavein = new NAudio.Wave.WaveInProvider(sourceStream);
//wavein.Read(send_data, 0, send_data.Length); // this buffer not work some times give me full buffer
BufferedWaveProvider pro = new BufferedWaveProvider(wavein.WaveFormat);
pro.AddSamples(send_data, 0, send_data.Length); // Empty buffer or error full buffer
stream.Write(send_data, 0, send_data.Length);
stream.Close();
client.Close();
}
catch (Exception e)
{
MessageBox.Show("Server is offline" + e, "Error");
// Здесь сообщение, что буфер заполнен, или отправляется его пустым, тогда декодер не получил ничего, выдает ошибку исключения или они происходят первыми}} и этот код на стороне сервера с Код для чтения MP3
IPAddress ip = Dns.GetHostEntry(serverip).AddressList[0];
TcpListener server_obj = new TcpListener(ip,port);
TcpClient client = default(TcpClient);
try
{
server_obj.Start();
while (true)
{
// accept all client
client = server_obj.AcceptTcpClient();
// make byte storage from network
byte[] received_buffer = new byte[BufferSize];
//get data from cst
NetworkStream stream = client.GetStream();
//save data from network to memory till finish then save with playing
MemoryStream ms = new MemoryStream();
int numBytesRead = 0;
while ((numBytesRead = stream.Read(received_buffer, 0, received_buffer.Length)) > 0)
{
// THIS STEP TO RECEIVE ALL DATA FROM CLIENT
ms.Write(received_buffer, 0, numBytesRead);
//receive sound then play it direct
WaveOut(ms.ToArray());
}
Byte_to_audio(ms.ToArray()); // YOU can make or allow override
}
}
catch(Exception e)
{
MessageBox.Show("Error Message : " + e, "Error");
}
}
Это метод, который читает поток, получающий данные из сети
private void WaveOut(byte[] mp3Bytes)
{
// MP3 Format
mp3Stream = new MemoryStream(mp3Bytes);
mp3FileReader = new Mp3FileReader(mp3Stream);
wave32 = new WaveChannel32(mp3FileReader, 0.3f, 3f);
ds = new DirectSoundOut(); // but declration up global
ds.Init(wave32);
ds.Play(); // work code*/
}
Пожалуйста, как я уже сказал, я не здесь, чтобы повторно задавать тот же вопрос, если бы я сделал, я выиграл Не публиковать это.