0

サウンドカードから出力されるオーディオからレコーダーを作成しようとしていますが、これがこれまでの進捗です。問題は、ファイルに保存するときに録音されたオーディオが非常に大きく、曲が数百メガバイトに達する可能性があることです。

これが私のコードです

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);
    };

前もって感謝します.. ;)

4

2 に答える 2

0

.MP3 拡張子を付けて WAV ファイルを保存しても、MP3 ファイルを作成することはできません (これは、ここで行っていることです)。マシンで使用可能なエンコーダーを選択し、それを介してオーディオを渡す必要があります。この記事では、NAudio でこれを行う方法について詳しく説明します。

于 2013-03-11T09:45:01.143 に答える