У нас нормально работает приложение webrtc android, мы используем Kurento в качестве медиа-сервера, и оно передает видео со скоростью 24 кадра в секунду;однако входящий видеопоток в приложении для Android представляет собой своего рода периодическую задержку, как если бы первые 15 кадров в секунду обрабатывались и воспроизводились плавно, но затем следующие 15 были пропущены, поэтому мы в итоге получаем видео, которое воспроизводится плавно длянесколько миллисекунд, но затем делает паузу на несколько миллисекунд.
Я полагаю, что частота входящего видео слишком велика для обработки устройством Android, поэтому оно пропускает некоторые кадры и затем продолжается, когда буфер снова становится свободным.Я получаю следующий вывод в logcat (который я гуглил, но не нашел ответа на мою проблему), говоря: ключевой кадр требуется сначала :
12-28 20:12:27.857 19648-19769/mx.blacklabs.parallax E/org.webrtc.Logging: HardwareVideoDecoder: decode() - key frame required first
12-28 20:12:27.858 19648-19796/mx.blacklabs.parallax E/org.webrtc.Logging: HardwareVideoDecoder: decode() - key frame required first
12-28 20:12:27.858 19648-19769/mx.blacklabs.parallax E/org.webrtc.Logging: HardwareVideoDecoder: decode() - key frame required first
Я получаю ту же ошибкусообщение порциями с разницей в миллисекунды, поэтому похоже, что оно связано с моей проблемой.
То, что я пробовал
-Использование maxFrameRate
MediaConstraint
какпоказано здесь но это, похоже, не имеет никакого эффекта.Кроме того, это, кажется, предназначено для localMediaStream, в то время как мы вместо этого пытаемся уменьшить remoteMediaStream.
Наблюдения
Используемое нами устройство Android - Moverio BT-300 который работает на андроид 5.1.1.Я использую следующую реализацию webrtc org.webrtc:google-webrtc:1.0.22672