Уже перепробовал куча вариантов. Мне по сети приходят байты WaveIn с голосом и передаются в эту функцию:
public static void Broadcast(byte[] data)
{
waveProvider.AddSamples(data, 0, data.Length);
//TODO (save to) Environment.CurrentDirectory + @"\out.mp3"
}
Приходят примерно несколько десятков раз в секунду. Вопрос такой: можно ли как-то эти байты преобразовать в MP3 кадр (Mp3Frame) [в приоритете] или хотя-бы этот кусочек со звуком как-то сохранить на диск? Перебрал разные варианты, все не подходят. Сейчас звук в виде:
internal static WaveOut waveOut = new WaveOut();
internal static BufferedWaveProvider waveProvider = new BufferedWaveProvider(new WaveFormat(8000, 2));
Он звучит в моих колонках, т.к. я использую
waveOut.Init(waveProvider);
waveOut.Play();
Рассмотрю любые варианты. Спасибо.
то, что получилось и кое-как работает
public static void Broadcast(byte[] data)
{
r = new Mp3FileReader(WavToMP3(data));
while ((frame = r.ReadNextFrame()) != null)
{
foreach(Consumer c in WebCast.Clients) c.Audio(frame.RawData);
Console.Title = frame.FrameLength.ToString();
}
}
public static MemoryStream WavToMP3(byte[] wavFile)
{
using(var retMs = new MemoryStream())
using(var ms = new MemoryStream(wavFile))
using(var rdr = new RawSourceWaveStream(ms, new WaveFormat(44100, 16, 1)))
using(var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, 128))
{
rdr.CopyTo(wtr);
wtr.Flush();
return new MemoryStream(retMs.ToArray());
}
}
Приложение на WPF в котором соединяюсь с 1с(RunApp) после работы вызываю закрытие соединения(ExitApp) все работает коректно соединение закрывается...
Создаю форму,но дочерняя появляется в другой стороне экрана, а хотелось бы на месте родительской
Не нашел ни одного похожего вопроса, кроме тех где изменения не происходят при добавление элементаА у меня проблема заключается в том что...