我正在尝试使用 opus 前向纠错 (FEC) 功能。我有一个服务,它使用 OPUS_SET_INBAND_FEC(1) 和 OPUS_SET_PACKET_LOSS_PERC(20) 进行编码,并使用 10ms 数据包并通过 UDP 发送它们。
虽然我不清楚解码过程。
我设法让它工作。
问题中所述的编码部分是正确的:
对于解码部分,当一个数据包丢失时,首先使用 fec=1调用下一个数据包的解码功能,然后再次使用 fec=0。
当使用 fec=1 调用 decode 时,发送的 pcm 将被完全填满。如果您不知道解码器上应该使用pcm 的长度OPUS_GET_LAST_PACKET_DURATION(x)其中 x 将获得最后一个数据包的持续时间。