[英]NAudio - Changing Bitrate of Recorded WAV file
我正在嘗試使用NAudio對Wav文件實施音頻記錄,但是WasapiLoopbackCapture類設置的默認比特率無法通過編程方式更改。
我正在將音頻輸出記錄到MemoryStream(下面的代碼段中的recordedStream)。 但是WasapiLoobpackCapture設置的默認比特率不符合我的需求。
我想使用320KBPS的比特率,並且嘗試使用WaveFormatConversionStream類以編程方式轉換記錄的文件,但無法使其工作。
WaveFormat targetFormat = WaveFormat.CreateCustomFormat(waveIn.WaveFormat.Encoding,
waveIn.WaveFormat.SampleRate, //SampleRate
waveIn.WaveFormat.Channels, //Channels
320000, //Average Bytes per Second
waveIn.WaveFormat.BlockAlign, //Block Align
waveIn.WaveFormat.BitsPerSample); //Bits per Sample
using (WaveStream inputStream = new RawSourceWaveStream(recordedStream, waveIn.WaveFormat))
{
try
{
using (var converter = new WaveFormatConversionStream(targetFormat, inputStream))
{
// ...
}
}
catch (Exception)
{
throw;
}
recordedStream.Dispose();
}
我總是收到“調用acmStreamOpen的AcmNotPossible”轉換異常。 如您所見,除了目標波形中的比特率較低外,我使用的格式與記錄的WAV文件完全相同(擴展編碼,44100等)。
從MemoryStream中包含的Wav文件進行比特率轉換的正確代碼是什么? 我的目標是獲得320KBPS的文件。
對於給定的采樣率,比特深度和通道數,PCM音頻始終具有相同的比特率(通過將這三個值相乘得出)。 如果要降低比特率,則必須更改這三個比率之一(降低采樣率可能是最好的選擇,除非可以從立體聲轉換為單聲道)。
確實,您應該考慮將編碼為MP3,WMA或AAC之類的格式,這樣您就可以選擇自己喜歡的比特率了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.