Однако я столкнулся с проблемой, когда говорящий ничего не слышит, либо потому, что другой пользователь отключил звук или просто тишина. В эти периоды молчания запись прекращается.
Например, если происходит 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);
Код: Выделить всё
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