From 656c7538238e282cf0545733798fbffbdfc0f674 Mon Sep 17 00:00:00 2001 From: Jared Goodwin Date: Fri, 17 May 2019 11:55:10 -0700 Subject: [PATCH] Resample audio to 16-bit so it works in Firefox. --- Remotely_ScreenCast.Win/Program.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Remotely_ScreenCast.Win/Program.cs b/Remotely_ScreenCast.Win/Program.cs index 7fa08e92..1da5dd53 100644 --- a/Remotely_ScreenCast.Win/Program.cs +++ b/Remotely_ScreenCast.Win/Program.cs @@ -104,16 +104,25 @@ namespace Remotely_ScreenCast.Win { if (args.BytesRecorded > 0) { - using (var ms = new MemoryStream()) + using (var ms1 = new MemoryStream()) { - using (var wfw = new WaveFileWriter(ms, AudioCapturer.WaveFormat)) + using (var wfw = new WaveFileWriter(ms1, AudioCapturer.WaveFormat)) { wfw.Write(args.Buffer, 0, args.BytesRecorded); } - await Conductor.CasterSocket.SendAudioSample(ms.ToArray(), Conductor.Viewers.Keys.ToList()); + using (var ms2 = new MemoryStream(ms1.ToArray())) + using (var wfr = new WaveFileReader(ms2)) + using (var ms3 = new MemoryStream()) + { + using (var resampler = new MediaFoundationResampler(wfr, new WaveFormat(AudioCapturer.WaveFormat.SampleRate, 16, AudioCapturer.WaveFormat.Channels))) + { + WaveFileWriter.WriteWavFileToStream(ms3, resampler); + } + await Conductor.CasterSocket.SendAudioSample(ms3.ToArray(), Conductor.Viewers.Keys.ToList()); + } } + } - }; AudioCapturer.StartRecording(); }