![](/img/trans.png)
[英]I want change wav file 16 kHz 16 bit to 8 kHz 16 bit mono C# NAudio
[英]change wav file ( to 16KHz and 8bit ) with using NAudio
我想使用 NAudio 將 WAV 文件更改為 8KHz 和 8bit。
WaveFormat format1 = new WaveFormat(8000, 8, 1);
byte[] waveByte = HelperClass.ReadFully(File.OpenRead(wavFile));
Wave
using (WaveFileWriter writer = new WaveFileWriter(outputFile, format1))
{
writer.WriteData(waveByte, 0, waveByte.Length);
}
但是當我播放 output 文件時,聲音只有嘶嘶聲。 我的代碼是正確的還是有什么問題?
如果我將 WaveFormat 設置為 WaveFormat(44100, 16, 1),它可以正常工作。
謝謝。
幾點建議:
下面是一些示例代碼,展示了如何從一種格式轉換為另一種格式。 請記住,您可能需要根據輸入文件的格式分多個步驟進行轉換:
using (var reader = new WaveFileReader("input.wav"))
{
var newFormat = new WaveFormat(8000, 16, 1);
using (var conversionStream = new WaveFormatConversionStream(newFormat, reader))
{
WaveFileWriter.CreateWaveFile("output.wav", conversionStream);
}
}
以下代碼解決了我處理 G.711 Mu-Law 的問題,其中 vox 文件擴展名為 wav 文件。 否則,我一直收到 WaveFileReader 的“No RIFF Header”錯誤。
FileStream fileStream = new FileStream(fileName, FileMode.Open);
var waveFormat = WaveFormat.CreateMuLawFormat(8000, 1);
var reader = new RawSourceWaveStream(fileStream, waveFormat);
using (WaveStream convertedStream = WaveFormatConversionStream.CreatePcmStream(reader))
{
WaveFileWriter.CreateWaveFile(fileName.Replace("vox", "wav"), convertedStream);
}
fileStream.Close();
openFileDialog openFileDialog = new openFileDialog();
openFileDialog.Filter = "Wave Files (*.wav)|*.wav|All Files (*.*)|*.*";
openFileDialog.FilterIndex = 1;
WaveFileReader reader = new NAudio.Wave.WaveFileReader(dpmFileDestPath);
WaveFormat newFormat = new WaveFormat(8000, 16, 1);
WaveFormatConversionStream str = new WaveFormatConversionStream(newFormat, reader);
try
{
WaveFileWriter.CreateWaveFile("C:\\Konvertierten_Dateien.wav", str);
}
catch (Exception ex)
{
MessageBox.Show(String.Format("{0}", ex.Message));
}
finally
{
str.Close();
}
MessageBox.Show("Konvertieren ist Fertig!");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.