WebRTC: при обнаружении тишины временные метки замедляются, а входящий поток останавливается.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 WebRTC: при обнаружении тишины временные метки замедляются, а входящий поток останавливается.

Сообщение Anonymous »

Я заметил проблему при использовании WebRTC в своем мобильном приложении для iOS. Я хочу записывать как исходящий, так и входящий звук во время разговора, и я успешно реализовал эту функцию.
Однако я столкнулся с проблемой, когда говорящий ничего не слышит, либо потому, что другой пользователь отключил звук или просто тишина. В эти периоды молчания запись прекращается.
Например, если происходит 20-секундный звонок, а другой пользователь выключает звук на последние 10 секунд, я получаю только 10-секундное сообщение. запись.
Не могли бы вы дать указания, как обеспечить продолжение записи даже в периоды тишины или когда другой пользователь отключен?
Какие шаги позволят воспроизвести проблему?
В neteq_impl.cc я добавил прослушиватель в decodeLoop:

Код: Выделить всё

strcpy(filepath, getenv("HOME"));
strcat(filepath, "/Documents/MyCallRecords/inputIncomingSide.raw");
const void* ptr = &decoded_buffer_[0];

FILE* fp = fopen(filepath, "a");
size_t written = fwrite(ptr, sizeof(int16_t), decoded_buffer_length_ - *decoded_length, fp);
fflush(fp);
fclose(fp);
И в audio_encoder.cc:

Код: Выделить всё

const void* ptr = &audio[0];
char buffer[256];
strcpy(buffer, getenv("HOME"));
strcat(buffer, "/Documents/MyCallRecords/inputCurrentUserSide.raw");
FILE* fp = fopen(buffer, "a");
if (fp == nullptr) {
AudioEncoder::EncodedInfo info;
info.encoded_bytes = 0;
info.encoded_timestamp = 0;
return info;
}
size_t written = fwrite(ptr, sizeof(const int16_t), audio.size(), fp);
fflush(fp);
fclose(fp);

Каков ожидаемый результат?
Ожидаемый результат заключается в том, что временные метки кадров будут сохраняться, даже если он слышит тишину или пользователь отключен звук.
Что вы видите вместо этого?
Отметки времени перемещаются медленнее, чем ожидалось, и запись останавливается.
Дополнительная информация:
Как входящий, так и исходящий звук используют частоту дискретизации 48 кГц.
Разница в размере кадра:
  • Входящий звук обрабатывается кадрами по 2880 семплов (60 миллисекунд при частоте 48 кГц).
  • Исходящий звук обрабатывается кадрами по 480 семплов (10 миллисекунд при частоте 48 кГц).Входящий звук обрабатывается кадрами по 480 сэмплов (10 миллисекунд при частоте 48 кГц).
  • Входящий звук обрабатывается кадрами по 480 сэмплов (10 миллисекунд при 48 кГц).
  • Исходящий звук обрабатывается кадрами по 480 семплов (10 миллисекунд при 48 кГц).
  • li>
Частота обработки:
  • Входящие аудиозаписи каждые 63–64 миллисекунды. >
  • Исходящие аудиозаписи каждые 20–22 миллисекунды.
Управление буфером:
  • Буфер входящего аудио имеет длину 5760 сэмплов, но каждый раз обрабатывается только 2880.
  • Исходящий звук каждый раз обрабатывает все 480 сэмплов в своем буфере.
    >Согласованность времени:
  • Входящий звук показывает очень постоянную синхронизацию между журналами.
  • Исходящий звук показывает небольшие различия во времени между журналами.
Какую версию продукта вы используете?
Коммит/Выпуск WebRTC: 6261i
В какой операционной системе?
ОС: мобильное приложение iOS
Версия: не имеет значения
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... incoming-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»