audio - 如何使用 Opus 编解码器的 FEC 功能

标签 audio opus

我正在尝试使用 opus 前向纠错 (FEC) 功能。 我有一项使用 OPUS_SET_INBAND_FEC(1) 进行编码的服务 OPUS_SET_PACKET_LOSS_PERC(20) 包含 10ms 数据包并通过 UDP 发送它们。

不过我不清楚解码过程。

  1. 当数据包丢失时,我是否需要仅使用 fec=1 调用解码,还是需要在下一个数据包之后也使用 fec=0 调用解码?
  2. 如何预先知道在启用 fec 的情况下发送以进行解码的 pcm 的大小?

最佳答案

我设法让它发挥作用。

问题中所述的编码部分是正确的:

  • 使用编码器 OPUS_SET_INBAND_FEC(1) 和 OPUS_SET_PACKET_LOSS_PERC(X),其中 x>0 且 x<100
  • 发送持续时间至少为 10 毫秒的数据包(例如:48 kHz 下的 480 个样本)

对于解码部分,当数据包丢失时,首先使用 fec=1 调用下一个数据包的解码函数,然后再次使用 fec=0。

当使用fec=1调用decode时,发送的pcm将被完全填满。 如果您不知道 pcm 的长度,请在解码器上使用 OPUS_GET_LAST_PACKET_DURATION(x),其中 x 将获取最后一个数据包的持续时间。

关于audio - 如何使用 Opus 编解码器的 FEC 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427579/

相关文章:

java - 在 Java 中处理/记录多个音频输入流

javascript - 设备锁定时停止播放 HTML5 音频(Android 和 iOS)

apache-flex - 如何在mouseEvent情况下仅触发一次函数

audio - iOS - 转换音频格式(作品到 mp3)

python - Discord.Py Opus Heroku 问题

java - 使用libjitsi的Java上的作品

internet-explorer - 当我在文本框中按 Enter 时,我需要抑制什么事件才能从 "Dinging"停止 IE?

javascript - 跨浏览器兼容音频有哪些选项?

c# - 从设备发送 NAudio/Opus 编码的音频作为 RTP

ios - 如何使用 opus 编码和解码音频