代码之家  ›  专栏  ›  技术社区  ›  Kamal Palei

一个RTP包中需要发送多少字节的Opus有效负载

  •  1
  • Kamal Palei  · 技术社区  · 9 年前

    我有包含OPUS帧的Ogg格式文件。根据我的要求,我需要解析这个文件(帧/包),并通过RTP将OPUS压缩数据发送到远程设备。

    我的问题是在一个RTP包中(假设采样率为48khz)
    1.将发送一个OPUS帧
    2.或发送多个OPUS帧
    3.或根据Ogg文件格式规范发送一个数据包,可以是一帧、2帧或任意数量的帧

    1 回复  |  直到 9 年前
        1
  •  4
  •   Community Mike Causer    3 年前

    每个Opus RTP包包含 only one Opus packet ,由 Opus specification 。这可能在内部包含多个Opus帧,但它必须具有正确的标头字节来表示这一点并符合其他规则,因此请确保规范中的“帧”含义相同。

    基本上,您希望将Ogg文件中的每个Opus数据包发送到其自己的RTP数据包中。RTP负载级别没有打包。不要在.opus-Ogg流的前两个数据包中发送Id或Comment报头,当然,您需要在RTP报头前添加适当的标志、时间戳等。

    看见 https://git.xiph.org/?p=opus-tools.git;a=blob;f=src/opusrtp.c#l517 这是一个玩具实现。