Android WebRTC不能发送DTMF



在我的Android WebRTC客户端发送DTFM音调,我使用这样的代码

val audioSource = peerConnectionFactory.createAudioSource(MediaConstraints())
val localAudioTrack = peerConnectionFactory.createAudioTrack("audio", audioSource)
peerConnection.addTrack(localAudioTrack)
peerConnection?.senders?.firstOrNull()?.let {
it.dtmf()?.insertDtmf(code, 400, 50)
}

但是似乎tone没有到达peer,并且在logcat
dtmf_sender中有错误消息。

在不能发送DTMF的DtmfSender上调用InsertDtmf。无论我使用什么设备。
为什么会这样?

发生这种情况的原因有很多,其中一个原因是WebRTC连接中的另一方不支持RTP电话事件

同样,检查这个例子:https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_DTMF(虽然我自己没试过)

请注意:

">请注意,尽管可以使用WebRTC发送DTMF,但目前没有办法检测或接收传入的DTMF。WebRTC目前忽略了这些有效载荷;这是因为WebRTC的DTMF支持主要用于传统电话服务">

我发现,问题是对等体不通过RTP连接。我的意思是WebRTC还没有找到合适的路由,基于ICE候选人聚集,通过音频流量。
由于只有路由被构建,流量继续,并且发送方准备发送DTMF音。
为确保对等端已准备好接收媒体,您可以查看PeerConnection.Observer.onIceConnectionChange()中的连接状态,并在状态为"CONNECTED"时获取发送方。

最新更新