При использовании Opus по сети с использованием протокола, такого как RTP, где пакеты имеют временную метку, DTX может быть включен, если вы хотите уменьшить пакеты, отправленные в периоды отсутствия активности голоса. Пакет все равно будет отправляться каждые 400 мс, обновляя фоновый шум. Используя временные метки пакета, получатель может определить продолжительность любых зазоров и заполнить их фоновым шумом, чтобы он казался естественным.
Включите DTX в кодировщике с использованием opus_encoder_ctl(enc, OPUS_SET_DTX(1));
или с опцией -dtx
на opus_demo
. Затем просто не отправляйте пакеты, созданные энкодером длиной не более 2 байтов. (Эти «пакеты DTX» представляют собой только фреймы нулевой длины с обычным 1- или 2-байтовым заголовком пакета (TOC) и не содержат никаких аудиоданных.) Пакеты с длиной более 2 байтов должны быть отправлены, как обычно ,
Приемник должен использовать обычное маскирование потери пакетов для обработки отсутствующих пакетов таким же образом, как и для потери пакетов. В частности, он может звонить opus_decode()
с data = NULL
, len = 0
и frame_size
, равным размеру отсутствующего кадра (-ов), и декодер будет генерировать аудиоданные, чтобы скрыть недостающий кадр (ы).