예제 #1
0
        private async void SendTempBuffer()
        {
            if (TempBuffer.Count == 0)
            {
                return;
            }

            using (var ms1 = new MemoryStream())
            {
                using (var wfw = new WaveFileWriter(ms1, Capturer.WaveFormat))
                {
                    wfw.Write(TempBuffer.ToArray(), 0, TempBuffer.Count);
                }
                TempBuffer.Clear();

                // Resample to 16-bit so Firefox will play it.
                using (var ms2 = new MemoryStream(ms1.ToArray()))
                    using (var wfr = new WaveFileReader(ms2))
                        using (var ms3 = new MemoryStream())
                        {
                            using (var resampler = new MediaFoundationResampler(wfr, TargetFormat))
                            {
                                WaveFileWriter.WriteWavFileToStream(ms3, resampler);
                            }
                            await Conductor.CasterSocket.SendAudioSample(ms3.ToArray(), Conductor.Viewers.Keys.ToList());
                        }
            }
        }