首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Opus中,"useinbandfec是一个单向接收参数“是什么意思?

在Opus中,"useinbandfec是一个单向接收参数“是什么意思?
EN

Stack Overflow用户
提问于 2017-10-18 22:02:55
回答 1查看 1.9K关注 0票数 0

我试图在C++中实现一个Opus转换程序,我有一些概念性的问题。至于useinbandfec参数,我不太理解用RFC7587,第7.1节编写的“单向接收参数”的含义。

"useinbandfec“参数是一个单向接收参数。

例如,爱丽丝打电话给鲍勃。Alice在useinbandfec=1中使用Opus编解码器,而Bob不使用Opus。因此,两者之间应该有一个Opus转换器。如果是,我如何配置Opus编码器和解码器的设置?

对于需要opus_decode()的Alice->Bob,应该发送什么值作为第5个参数(fecFlag)?对于Bob->Alice,在需要Opus编码器的地方,应该用OPUS_SET_INBAND_FEC()opus_encoder_ctl()中发送什么值?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-18 22:50:09

参数在中的应用

此参数意味着编码器向流中添加其他信息以恢复丢失的数据包。它是如何工作的,当编码器编码数字N+1数据包时,它添加了一些关于分组N的信息,如果它支持恢复,对解码器是有用的。

如果解码器不支持恢复,那么这些信息是无用的,浪费带宽。

单向接收仅表示参数

这意味着如果在会话描述符(SDP)中指定它,则此参数描述接收方的能力,并建议发送方使用或不使用入站FEC。

问题:

1

例如,爱丽丝打电话给鲍勃。Alice在useinbandfec=1中使用Opus编解码器,而Bob不使用Opus。因此,两者之间应该有一个Opus转换器。如果是,我如何配置Opus编码器和解码器的设置?

在这种配置中,您需要Alice和Bob之间的代码转换。如果代码转换程序支持FEC,您可能更喜欢包含useinbandfec=1到SDP fmtp属性。如果编码器( Alice上的发送方)也在您的控制下,您可以设置ask编码器在以下条件下将FEC添加到流中:

  • 网络中的损失(可由RTCP检测)
  • 译码器对其进行解码的能力(从SDP参数中可以知道)

2

对于需要opus_decode()的Alice->Bob,应该发送什么值作为第5个参数(fecFlag)?

当您检测到数据包丢失时(例如,通过opus_decode序列号),将使用RTP FEC标志。假设您接收到的数据包N和N-1数据包丢失了.然后,您可以通过调用opus_decode并将fecFlag设置为true来恢复数据包N1,然后解码数据包N:

代码语言:javascript
复制
packets[N-1] = decode_opus(pktN, fecFlag=true)
packets[N]   = decode_opus(pktN, fecFlag=false)

3

对于需要Opus编码器的Bob->Alice,应该在opus_encoder_ctl()中用opus_encoder_ctl()发送什么值?

OPUS_SET_INBAND_FEC最好是从从Alice检索的useinbandfec参数中设置。另外,除非您没有设置PERC,否则不要将FEC包括在编码流中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46819965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档