У меня есть приложение для чата в реальном времени Qt для Android (v 4.1, API 16), которое отправляет фрагменты H.264 / AAC на сервер RTMP.
На данный момент приложение использует SurfaceView
для захвата кадров из Camera
И в onPreviewFrame
Функция, которую я кодирую кадры в фрагменты H.264 и другие Thread
Я создаю фрагменты RTMP, которые отправляются на сервер RTMP, как я писал выше.
Фон прозрачный (с Qt::WindowStaysOnTopHint
флаг) и QML UI рисует выше Camera
«s SurfaceView
— работает неплохо, без лагов и прочего. Но когда я пытался использовать QML TextArea
(для написания сообщений чата), что также выше SurfaceView
На некоторых устройствах (а не на Samsung) очень большие задержки, когда я нажимаю любую клавишу на виртуальной клавиатуре Android, что делает это приложение абсолютно непригодным для использования. Например, я набираю «LAG» на клавиатуре, и между отображением каждого символа в задержке 3-4 секунды. TextArea
))): SurfaceView
и трансляция работает без лагов.
Итак, уважаемые разработчики, что я буду делать, чтобы решить эту проблему?
На данный момент я переехал Camera
предварительный просмотр до SurfaceTexture
и нарисовать его, используя Qt’s QSGGeometryNode
Но есть еще одна проблема: как читать пиксели с SurfaceTexture
более эффективным? Можно ли сделать производительность быстрее или похожей на onPreviewFrame
? Может быть, я двигаюсь в неправильном направлении, и я могу сделать некоторый трюк с TextArea
?
Спасибо!
Задача ещё не решена.
Других решений пока нет …