2016-08-05 9 views
11

В моем приложении Android я показываю потоковое видео в реальном времени с использованием библиотеки LibVLC. Для подключения SSH сервер я использовал jsch библиотека.Как избежать таймаута сеанса в Android

Когда я запускаю приложение, после сеансного подключения видео работает правильно. и когда я скрою приложение на 3-4 минуты и снова возобновляю видео, вы будете работать правильно. Но когда я скрою приложение на 10 или более минут и в резюме, он показывает сообщение session timeout.

OnResume() Я попытался создать сеанс и createPlayer(), но все еще не работает.

Я попытался изменить время соединения сеанса.

Есть ли способ избежать таймаута сеанса в течение длительного периода, например, 30 минут.

// ** ПОСЛЕ EDIT ** //

Я проверил после onResume() сеанса все еще подключен, и журнал ошибок говорит Connection reset by peer.

Что это значит? Закрыт ли туннель ssh? Если да, то как проверить статус туннеля ssh?

Журнал ошибок:

08-09 10:52:15.268 6529-21339/com.compdigitec.libvlcandroidsample E/VLC: live555 demux: Failed to connect with rtsp://localhost:8554/video.ts 08-09 10:52:15.268 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: core demux: no access_demux modules matched 08-09 10:52:15.268 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: core input: creating access 'rtsp' location='localhost:8554/video.ts', path='(null)' 08-09 10:52:15.268 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: core access: looking for access module matching "rtsp": 15 candidates 08-09 10:52:15.268 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: core access: net: connecting to localhost port 8554 08-09 10:52:15.278 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: core access: connection succeeded (socket = 36) 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample E/VLC: core access: read error: Connection reset by peer 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: access_realrtsp access: rtsp connected 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample W/VLC: access_realrtsp access: only real/helix rtsp servers supported for now 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample D/VLC: core access: no access modules matched 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample E/VLC: core input: open of rtsp://localhost:8554/video.ts' failed 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample E/VLC: core input: Your input can't be opened 08-09 10:52:35.823 6529-21339/com.compdigitec.libvlcandroidsample E/VLC: core input: VLC is unable to open the MRL 'rtsp://localhost:8554/video.ts'

+0

Я рекомендовал бы, чтобы вместо изменения тайм-аут, вы реализуете механизм, который автоматически восстанавливает всякий раз, когда ваше приложение резюме. Вы никогда не сможете быть на 100% уверены, что ваше сетевое соединение будет оставаться открытым надолго - подумайте о том, что пользователь переходит от одного Wi-Fi к другому или временно потерял соединение. –

+0

Я добавил код для повторного подключения к сеансу, но он показывает мне ошибку Demux –

+0

Похоже, вы получаете другую ошибку. Я бы предложил вам опубликовать соответствующую часть вашего кода и точную ошибку/исключение. –

ответ

1

Ошибка демультиплексора вы получаете происходит на более высоком уровне в стеке. Вы должны сначала подтвердить, что базовое SSH-соединение все еще хорошо. Для этого, проверьте и при необходимости переподключения, когда приложение возобновит:

public void onResume() { 
    if (!session.isConnected()) { 
     reconnect(); // needs to create a new session, open a channel, etc. 
    } 
} 

После проверки соединения SSH, вы должны быть в состоянии возобновить поток через LibVLC. Если, однако, вы все еще видите ошибку в этой точке, вам нужно будет показать код, который вы используете для открытия/возобновления потока.

0

Кажется, что вы открываете новый поток, когда у вас уже есть существующий поток. Поместите проверку, чтобы создать новый поток только в том случае, если старый поток отключен.

Следующая ссылка может добавить некоторую помощь:

https://github.com/bastimeyer/livestreamer-twitch-gui/issues/181

0
 public void onResume() { 
     if (!session.isConnected()) { 
    reconnect(); // needs to create a new session, open a channel, etc. 
    } 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^