【问题标题】:ambiguity in G729 AnnexesG729 附件中的歧义
【发布时间】:2014-07-30 23:11:49
【问题描述】:

在 SIP SDP 中:

如何通过读取 SDP 媒体属性来检测 G729A 编解码器? 例如下面的 SDP,说这是一个 G729B 编解码器,

m = audio 33712 RTP/AVP 18 101
a = rtpmap:18 G729/8000
a = fmtp:18 annexb=yes
a = rtpmap:101 telephone-event/8000
a = fmtp:101 0-15

如果我得到“annexb=no”,这是否意味着 G729a ?或者当我得到“annexa=yes”时,只有它的 G729a。根据wikipedia G729 编解码器有各种附件,如 A、B、C、D、E、F 等...如果我想检测它们中的每一个,我可以依赖字符串“附件”,例如我想检测 G729F,我可以依赖属性字符串“annexf=yes”吗??

【问题讨论】:

    标签: sip voip sdp


    【解决方案1】:

    来自RFC4856 第 2.1.9 节

        annexb: indicates that Annex B, voice activity detection, is
        used or preferred.  Permissible values are "yes" and "no"
        (without the quotes); "yes" is implied if this parameter is
        omitted.
    

    更多详细信息请参见RFC3551 第 4.5.6 节(G.729、G.729a 和 G.729b)和第 4.5.7 节(G.729d 和 G.729e)

    一般来说,G.729/G.729a/G.729b 具有相同的格式(G.729b 增加了携带舒适噪声的额外帧)。

    G.729 附件 C:

    本附件描述了 ITU-T G.729 完整版和附件 A 的浮点算法的替代实现。

    G.729d 和 G.279e 定义了不同的帧格式(并且在 SDP 媒体行中标识不同)

    G.729 附件 F:

    本附件提供了集成附件 B 和 D 的描述,在此定义了 DTX 附件 D 的功能

    G.729 附件 G:

    本附件提供了集成附件 B 和 E 的描述,在此定义了 DTX 附录 E 的功能。

    所以 G.729f 和 G.729g 没有引入新格式,而是使用 G.729d 和 G.279e 的帧格式:(在 RF3551 上:)

    语音活动检测器 (VAD) 和舒适噪声发生器 (CNG) G.729 附件 B 中规定的算法可以与附件 D 一起使用,并且 除了 G.729 和 G.729 附件 A 帧之外的附件 E 帧。这 附件 D 和 E 操作的算法细节与附件 B CNG 在 G.729 附件 F 和 G 中规定。注意附件 F 和 G 没有引入任何新的编码。接收者必须接受 舒适的噪音框架,如果它们的使用没有受到限制 发出信号。 RFC 3555 [7] 中 G729D 和 G729E 的 MIME 注册 指定一个可以与 MIME 或 SDP 一起使用的参数来限制 使用舒适噪音框架

    上面提到的参数是附件b=yes|no


    就 SDP 有效负载中的表示而言。

    • G729、G729a(和 G729c):
      • m= 行数:18
      • a=rtpmap:18 G729/8000
      • a=fmtp:18 附件b=no(或不存在)
    • G729b
      • m= 行数:18
      • a=rtpmap:18 G729/8000
      • a=fmtp:18 附件b=yes
    • G729d
      • m= 行中的数字:n(动态)
      • a=rtpmap:n G729D/8000
      • a=fmtp:n附件b=no(或不存在)
    • G729e
      • m= 行中的数字:n(动态)
      • a=rtpmap:n G729E/8000
      • a=fmtp:n附件b=no(或不存在)
    • G729f
      • m= 行中的数字:n(动态)
      • a=rtpmap:n G729D/8000
      • a=fmtp:n 附件b=yes
    • G729g
      • m= 行中的数字:n(动态)
      • a=rtpmap:n G729E/8000
      • a=fmtp:n 附件b=yes

    【讨论】:

    • 谢谢先生的回答。杰桑坦德。
    • 嗨@JohnG,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做
    • 谢谢先生的回答。詹桑坦德你的意思是当我们进入 SDP 'annexa=no' 或 'annexb=yes' 时,它意味着它的 G729B,当我们得到 'annexb=no' 或 'annexa=yes' 时,它意味着它的 G729A。所有其他附件(C、D、E、F、G、H、I、C+、J)都可以从 SIP SDP 其他属性中检测到。
    • @JohnG 实际上,没有。没有附件参数。附件b=yes 参数的存在表示支持舒适噪声发生器。这区分了附件A/附件B,以及附件D/附件F 和附件E/附件G。 AnnexA/B 是 RTP 代码 18(固定),而 AnnexD/AnnexF、AnnexE/AnnexG 是动态分配的 RTP,并用参数 a=rtpmap nn G729D/8000 或 a=rtpmap nn G729E/8000 指示(我相信),其中 nn 是动态分配的分配的 RTP。
    • @JohnG 检查 RFC 4856,G723 确实有一个附件参数,表示支持语音活动检测....它是一个不同于 G729 附件 A 的附件 A:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多