【问题标题】:Android WebRTC cant send DTMFAndroid WebRTC 无法发送 DTMF
【发布时间】:2023-01-12 01:47:00
【问题描述】:

在我的 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)
}

但是似乎音调没有到达对等点,并且在 logcat 中有错误消息
dtmf_sender.cc E(第 126 行):在无法发送 DTMF 的 DtmfSender 上调用 InsertDtmf。

不管我用什么设备。
为什么会发生?

【问题讨论】:

    标签: android webrtc dtmf


    【解决方案1】:

    Sample code block over here

    测试强文本

    重点

    在这里引用!

    #标题#

    【讨论】:

      【解决方案2】:

      发生这种情况有多种原因,其中之一是 WebRTC 连接中的另一方不支持 RTP telephone-event

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

      注意这一点:

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

      【讨论】:

        【解决方案3】:

        我发现,问题是对等点不是通过 RTP 连接的。我的意思是 WebRTC 还没有找到合适的路线,基于收集到的 ICE 候选人,来传递音频流量。
        由于只构建了路由,流量继续进行,发送方准备好发送 DTMF 音调。
        为确保对等点准备好传输媒体,您可以查看PeerConnection.Observer.onIceConnectionChange() 中的连接状态,并在状态变为“CONNECTED”时获取发件人。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-13
          • 2012-11-23
          • 1970-01-01
          • 1970-01-01
          • 2011-04-06
          • 2021-06-25
          • 1970-01-01
          相关资源
          最近更新 更多