Параметр useinbandfec
Этот параметр означает, что кодировщик помещает в поток дополнительную информацию для восстановления потерянных пакетов. Как это работает, когда кодировщик кодирует пакет с номером N+1, он добавляет туда некоторую информацию о пакете N, которая полезна для декодера, если он поддерживает восстановление.
Если декодер не поддерживает восстановление, то эта информация бесполезна и расходует пропускную способность.
Значение параметра "только однонаправленный прием"
Это означает, что если вы укажете его в дескрипторе сеанса (SDP), то эти параметры описывают возможности получателя и советуют отправителю использовать или не использовать входящий FEC.
Вопросы:
1
Например, Алиса звонит Бобу. Алиса использует кодек Opus с useinbandfec=1, а Боб не использует Opus. Следовательно, между ними должен быть транскодер Opus. Если да, то как я могу настроить параметры кодировщика и декодера Opus?
В этой конфигурации вам нужен транскодер между Алисой и Бобом. Если транскодер поддерживает FEC, вы можете включить useinbandfec=1 в атрибут fmtp SDP. Если кодировщик (отправитель на устройстве Алисы) также находится под вашим контролем, вы МОЖЕТЕ установить запрос кодировщика на добавление FEC в поток при следующих условиях:
- Потери в сети (могут быть обнаружены RTCP)
- Способность транскодера декодировать его (может быть известна из параметра SDP)
2
Что касается Алисы->Боба, где требуется opus_decode(), какое значение должно быть отправлено в качестве 5-го параметра (fecFlag)?
Флаг opus_decode FEC используется при обнаружении потери пакетов (например, по порядковому номеру RTP). Предположим, что вы получили пакет N, а пакет N-1 потерян. Затем вы можете восстановить пакет N-1, вызвав opus_decode с параметром fecFlag, установленным в true, а затем декодировать пакет N:
packets[N-1] = decode_opus(pktN, fecFlag=true)
packets[N] = decode_opus(pktN, fecFlag=false)
3
А что касается Боба->Алисы, где нужен кодировщик Opus, какое значение следует отправить с помощью OPUS_SET_INBAND_FEC() в opus_encoder_ctl()?
OPUS_SET_INBAND_FEC лучше устанавливать из параметра useinbandfec, полученного от Алисы SDP. Также имейте в виду, что FEC не включается в закодированный поток, если вы не установите OPUS_SET_PACKET_LOSS_PERC
person
Dmitry Poroh
schedule
18.10.2017