Linphone opus 编解码器采样率

Ehs*_*ani 1 voip sip linphone opus linphone-sdk

我想在 linphone 中使用 opus 编解码器

但我在使用它时遇到了一些问题。如果具有 opus 编解码器知识的人可以帮助我,我将不胜感激。如何强制音频采样方案为 8000 Hz?目前,它仅使用 48000 Hz。

提前致谢

小智 5

如果您查看rfc7587 第 4.1 节,您可以阅读以下内容:

Opus supports 5 different audio bandwidths, which can be adjusted
during a stream.  The RTP timestamp is incremented with a 48000 Hz
clock rate for all modes of Opus and all sampling rates.  The unit
for the timestamp is samples per single (mono) channel.  The RTP
timestamp corresponds to the sample time of the first encoded sample
in the encoded frame.  For data encoded with sampling rates other
than 48000 Hz, the sampling rate has to be adjusted to 48000 Hz.
Run Code Online (Sandbox Code Playgroud)

阅读 rfc7587 中的更多内容,您会发现,在 SDP 中,无论实际采样率如何,您总是会看到编解码器使用“OPUS/48000/2”。

无论实际采样率如何,如上所述,RTP 时间戳始终会以 48000 Hz 时钟速率递增。

如果您希望控制编解码器的实际采样率(从而控制带宽),您可以使用以下 SDP 参数:maxplaybackratemaxaveragebitrate是要使用的参数。

3.1.1节列出了maxaveragebitrate和采样率之间的关系:

3.1.1.  Recommended Bitrate

   For a frame size of 20 ms, these are the bitrate "sweet spots" for  Opus in various configurations:

   o  8-12 kbit/s for NB speech,
   o  16-20 kbit/s for WB speech,
   o  28-40 kbit/s for FB speech,
   o  48-64 kbit/s for FB mono music, and
   o  64-128 kbit/s for FB stereo music.
Run Code Online (Sandbox Code Playgroud)

结论:要在 OPUS 中仅使用 8000Hz,必须协商这些参数,其中 12kbit/s 是 NB 语音中 opus 的最大设置:

   m=audio 54312 RTP/AVP 101
   a=rtpmap:101 opus/48000/2
   a=fmtp:101 maxplaybackrate=8000; sprop-maxcapturerate=8000; maxaveragebitrate=12000
Run Code Online (Sandbox Code Playgroud)

我不知道 linphone 是否遵循所有参数,但这就是理论!