我有以下代码作为音频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数据包传输。
我是否正确完成了这项工作?
答案 0 :(得分:2)
有更有效的方法来编程,它实际上不应该是硬编码(音量,频率,长度等),但这大致是正确的。我使用的是M_PI而不是PI。
注意:count == j,wave = 0没用(先改变+ = =)等等。
答案 1 :(得分:1)
稍微偏离主题,但如果您将数据作为RTP发送,那么您是否检查过远程对等体是否支持RFC2833?如果是这样,您可以使用符合RFC2833的RTP数据包传递DTMF数字,并避免在链路的两端进行大量工作。
麦克