生成DTMF音以发送RTP数据包

时间:2010-10-16 22:04:50

标签: core-audio audio-streaming rtp dtmf

我有以下代码作为音频RTP数据包发送一些DTMF数字:

 int count=0
 for(int j = 0; j < samples; j++) 
  {
      waves = 0;
      // dtmf tone 1

      waves += sin( ((PI * 2.0f / 8000) * 697.0f) * count );
      waves += sin( ((PI * 2.0f / 8000) * 1209.0f) * count);
      waves *= 8191.0f;   //amplitude   
      ++count;
      values[j] = (SInt16)waves;  
  }

我以编程方式生成数字。这段代码基本上加了2个正弦波并应用了缩放。这将产生16位PCM数据,然后可以对其进行编码。采样率为8K,作为RTP数据包传输。

我是否正确完成了这项工作?

2 个答案:

答案 0 :(得分:2)

有更有效的方法来编程,它实际上不应该是硬编码(音量,频率,长度等),但这大致是正确的。我使用的是M_PI而不是PI。

注意:count == j,wave = 0没用(先改变+ = =)等等。

答案 1 :(得分:1)

稍微偏离主题,但如果您将数据作为RTP发送,那么您是否检查过远程对等体是否支持RFC2833?如果是这样,您可以使用符合RFC2833的RTP数据包传递DTMF数字,并避免在链路的两端进行大量工作。

麦克