2015-01-12 2 views
0

Я хочу отправить строку байт динамик что-то вроде этого:отправить массив байтов System.Media.SoundPlayer в C#

byte[] bt = {12,32,43,74,23,53,24,54,234,253,153};// example array 
var ms = new MemoryStream(bt); 
var sound = new System.Media.SoundPlayer(); 
sound.Stream = ms; 
sound.Play(); 

но я получаю это исключение: my problem pic http://8pic.ir/images/g699b52xe5ap9s8yf0pz.jpg

+7

Что должен делать динамик с этой * случайной * последовательностью байтов? Вам необходимо * сформировать * действительный поток WAV. – TLama

+1

Класс SoundPlayer ожидает WAV-файл, а не случайный поток байтов. В вашем потоке байтов нет заголовка, который соответствует WAV-файлу, поэтому ошибка. Итак, вы показали нам, что вы пробовали, можете ли вы рассказать нам немного больше о том, что вы пытаетесь сделать и почему? – Nanhydrin

+0

для первого случайного –

ответ

0

Вы можете использовать некоторую библиотеку для чтения данных с микрофона или воспроизведения его на динамиках. Я работал с успешно: NAudio - http://naudio.codeplex.com/

Я бы не рекомендовал построения WAV файл самостоятельно, это может быть слишком много усилий для этого. Обратите внимание, что эта библиотека (и, возможно, некоторые другие, Bass - http://www.un4seen.com также широко используется) также имеют встроенные функции для сохранения и чтения WAV-файлов.

+0

, так что вы имеете в виду, что я получаю волновой файл от микрофона и отправляю этот файл волны с TCP/IP и на другом компьютере посылаем ему динамик? Если я могу отказаться от heaer и footer wawe file it dot waste width band –

+0

Если вам не нужно сохранять данные, просто отправьте их и сыграйте - вы можете легко сделать это, отправив пакеты по сети, и для этого я использовал NAudio непосредственно. Я не уверен, насколько легко играть с Media.SoundPlayer, но играть с NAUdio не сложно – ShayD

+0

дорогой оттенок Я нашел http://www.alvas.net/alvas.audio,articles.aspx, который вы можете рассмотреть Это очень хороший пример –

1

Первые байты WAV-поток содержит информацию о длине и т. Д. Вы также должны отправить этот «WAV-Header» в первые несколько байтов.

См http://de.wikipedia.org/wiki/RIFF_WAVE

Как вы будете видеть его вполне можно компоновать несколько байт в заголовке и отправить их, прежде чем сырые аудиоданных,

+1

вы имеете в виду, что я должен подключить wav- заголовок сначала моя байтовая строка, если я хочу отправить их в динамик ???? –

+1

Да, первая пара байтов - заголовок RIFF-WAV, см. Ссылку – DrKoch

+0

. Заголовок включает также длину необработанных данных. – i486

0

NAudio является лучшим приложением, чтобы играть эту функциональность. используйте примерное приложение. Это может помочь.

+0

alvas.net/alvas.audio,articles.aspx это очень приятно для примера файла волны. –