Как ускорить подключение к IP-камере в Android-приложении?

Я разрабатываю приложение для Android (Android 5.1) для воспроизведения видеопотока с IP-камеры по протоколу RTSP.

Я получаю и отображаю видеопоток стандартными методами Android VideoView:

videoView.setVideoURI(Uri.parse("rtsp://192.168.1.13:8888/test"));
try {
 videoView.start();
 }
catch (Exception ex) {
 ex.printStackTrace();
}

Все работает нормально, но подключение к камере идет слишком долго. Это занимает около 5-7 секунд (слишком долго для моих нужд), прежде чем видео начнет воспроизводиться.

Есть ли способ ускорить время соединения?

Вы имеете в виду, что соединение занимает так много времени, или задержка воспроизведения настолько велика?

n247s 02.06.2019 21:20

@ n247s Точно установил соединение. Воспроизведение не имеет задержки.

the korovay 02.06.2019 22:18

Тем не менее связь должна быть установлена. Поэтому я предполагаю, что вы вообще не можете обойти задержку соединения. Единственное, что вы можете сделать, это поддерживать ресурс/соединение, чтобы повторная активация не занимала много времени. (вероятно, выполнено с помощью VideoView#suspend()?)

n247s 03.06.2019 18:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
220
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец нашел решение. Проблема заключалась в том, что Android' MediaPlayer, являющийся частью VideoView, имеет фиксированный размер буфера, который нельзя изменить. Так что я использовал Google' ExoPlayer, который предоставляет такую ​​​​функцию. Уменьшение размера буфера решило мою проблему.

P.S. Поддержание ресурса/соединения с помощью VideoView.suspend() или VideoView.pause() для возобновления трансляции позже не имеет значения.

Другие вопросы по теме