写入文件时压缩音频

时间:2013-03-11 01:20:17

标签: c# naudio

我正在尝试从声卡中输出音频来创建录音机,这是我目前的进步,问题是保存到文件时录制的音频如此大,就像一首歌可以达到数百兆字节。

这是我的代码

using NAudio.CoreAudioApi;
using NAudio.Wave;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Record_From_Soundcard
{
    public partial class frmMain : Form
    {
        private WaveFileWriter writer;
        private WasapiLoopbackCapture waveInSel;

        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            MMDeviceEnumerator deviceEnum = new MMDeviceEnumerator();
            MMDeviceCollection deviceCol = deviceEnum.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active);

            cboAudioDrivers.DataSource = deviceCol.ToList();
        }       

        private void btnStopRecord_Click(object sender, EventArgs e)
        {
            waveInSel.StopRecording();
            writer.Close();
        }        

        private void btnStartRecord_Click(object sender, EventArgs e)
        {
            using (SaveFileDialog _sfd = new SaveFileDialog())
            {
                _sfd.Filter = "Mp3 File (*.mp3)|*.mp3";               

                if (_sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    MMDevice _device = (MMDevice)cboAudioDrivers.SelectedItem;
                    waveInSel = new WasapiLoopbackCapture(_device);
                    writer = new WaveFileWriter(_sfd.FileName, waveInSel.WaveFormat);                    

                    waveInSel.DataAvailable += (n, m) =>
                    {
                        writer.Write(m.Buffer, 0, m.BytesRecorded);
                    };

                    waveInSel.StartRecording();
                }
            }
        }
    }

}

任何人都可以帮我解决如何在保存时压缩音频吗?

也许会在这部分添加

waveInSel.DataAvailable += (n, m) =>
    {
         writer.Write(m.Buffer, 0, m.BytesRecorded);
    };

提前致谢..;)

1 个答案:

答案 0 :(得分:0)

您无法通过保存扩展名为.MP3的WAV文件制作MP3文件(这是您在此处所做的)。您需要选择机器上可用的编码器,并通过它传递音频。我在this article中详细介绍了如何使用NAudio执行此操作。