为了账号安全,请及时绑定邮箱和手机立即绑定

将音频录制到内存流中,然后将其保存到文件中

将音频录制到内存流中,然后将其保存到文件中

C#
慕无忌1623718 2021-06-22 17:13:02
您无需再次声明该事件。如果它是公共的并且在需要时已经被抛出,您可以根据需要通过订阅基类事件来处理更改。我的意思是,您可以执行以下操作:using System;using System.Windows.Forms;namespace DRT{    internal abstract partial class DRT_ComboBox_Abstract : ComboBox    {        public DRT_ComboBox_Abstract()        {            InitializeComponent();            SelectedValueChanged += MyOwnHandler        }        protected virtual void MyOwnHandler(object sender, EventArgs args)        {            // Hmn.. now I know that the selection has changed and can so somethig from here            // This method is acting like a simple client        }    }}在S O LID类上(我相信 是这种情况ComboBox),通常有效调用订阅者来处理某些事件的方法通常是虚拟的,一旦您从此类继承,就允许您拦截事件处理程序调用,如果这是你想要的。这是:using System;using System.Windows.Forms;namespace DRT{    internal abstract partial class DRT_ComboBox_Abstract : ComboBox    {        public DRT_ComboBox_Abstract()        {            InitializeComponent();        }        protected override void OnSelectedValueChanged(object sender, EventArgs args)        {            // Wait, the base class is attempting to notify the subscribers that Selected Value has Changed! Let me do something before that            // This method is intercepting the event notification            // Do stuff            // Continue throwing the notification            base.OnSelectedValueChanged(sender, args);        }    }}
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

试试这个:


using(var fileWriter = new WaveFileWriter("yourOutputFile", SampleProvider.WaveFormat)

{

    ResourceWaveStream.CopyTo(fileWriter);

}

顺便说一句,这里的“使用”块对您有好处,因为它会自动处理编写器,允许 WaveFileWriter 将标头写入文件。


查看完整回答
反对 回复 2021-06-27
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

好的,我终于有了解决方案。首先,我将声音数据直接复制到内存流中。然后当我需要它时,我将整个内存流读入 a RawSourceWaveStream,然后将其传递给最终的WaveFileWriter. 如果有人对我的具体做法感兴趣,请给我留言。



查看完整回答
反对 回复 2021-06-27
  • 2 回答
  • 0 关注
  • 216 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信