【发布时间】:2017-10-18 14:56:34
【问题描述】:
我正在使用Opus.NET 并成功地使用他们的默认演示项目编码音频,默认采样率48000。当我尝试将采样率更改为 8000 时,我收到 Opus Encoding 错误。
我确信这与segmentFrames 以及Bitrate 必须相应更改。我无法在此处进行此计算,这是我在 GitHub 的默认 Opus.NET 演示项目中的代码。
这里是代码
void StartEncoding()
{
_startTime = DateTime.Now;
_bytesSent = 0;
_segmentFrames = 960;
_encoder = OpusEncoder.Create(48000, 1, FragLabs.Audio.Codecs.Opus.Application.Voip);
_encoder.Bitrate = 8192;
_decoder = OpusDecoder.Create(48000, 1);
_bytesPerSegment = _encoder.FrameByteCount(_segmentFrames);
_waveIn = new WaveIn(WaveCallbackInfo.FunctionCallback());
_waveIn.BufferMilliseconds = 25;
_waveIn.DeviceNumber = comboBox1.SelectedIndex;
_waveIn.DataAvailable += _waveIn_DataAvailable;
_waveIn.WaveFormat = new WaveFormat(48000, 16, 1);
_playBuffer = new BufferedWaveProvider(new WaveFormat(48000, 16, 1));
_waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback());
_waveOut.DeviceNumber = comboBox2.SelectedIndex;
_waveOut.Init(_playBuffer);
_waveOut.Play();
_waveIn.StartRecording();
if (_timer == null)
{
_timer = new System.Windows.Forms.Timer();
_timer.Interval = 1000;
_timer.Tick += _timer_Tick;
}
_timer.Start();
}
每次我通过将值从 48000 更改为 8000 进行编码时,我都会在 Opus 上收到错误提示
编码错误参数不正确
【问题讨论】:
-
比特率错误。见维基:en.wikipedia.org/wiki/WAV
-
我知道如果我将比特率更改为 8000 样本它不能是 8192 并且segmentFrames 也需要从 960 更改为某些东西.. 但问题是什么。您提供的链接没有此信息。
-
此处列出的延迟是正常工作采样率(通常为 44.1 kHz)下的总延迟(帧大小,加上所有前瞻)。见网页:en.wikipedia.org/wiki/Comparison_of_audio_coding_formats