Буферизация заканчивается через 1 мин при воспроизведении rtsp-потока

1

Я написал небольшое приложение, которое просто отображает видеоданные из rtsp-потока (используя MediaPlayer-класс и SurfaceView-класс). Rtsp-поток создается с помощью vlc 2.0.0.

Он отлично работает, но после окончания воспроизведения 1 мин.

В logcat я нашел следующие строки:

//...

E/Overlay (138): Overlay не готов к буферам очереди

I/MyHandler (138): получил BYE по индексу дорожки 0

E/OMX-VDEC-720P (138): Rxd i/p EOS, уведомить водителя о том, что EOS достигнута

E/OMX-VDEC-720P (138): Выход EOS достигнут

E/OMX-VDEC-720P (138): Rxd OMX_COMPONENT_GENERATE_EOS_DONE

D/XXX (10485): onCompletion() называется

//...

Кажется, что (декодер?) Буферы заполнены, и поэтому воспроизведение заканчивается. Могу ли я обрабатывать эти буферы, чтобы можно было получить новые данные?

На этот раз я решил, что, ожидая, когда onCompletion-Event перезагрузит/перезагрузит MediaPlayer, но на самом деле это не способ сделать это, правильно?

У кого-нибудь есть решение/идея для этого?

Greetzn + thanx заранее...

Теги:
video-streaming
rtsp

2 ответа

1

Вероятно, время ожидания сеанса достигнуто. Вы можете проверить заголовки, отправленные обратно в запросе PLAY чтобы узнать, существует ли директива timeout= !

Если вам нужно сделать запрос GET_PARAMETER каждые столько секунд, как указано значением этого заголовка, в противном случае сервер будет убивать ваш сеанс.

Также см. Есть ли такой RTSP Ping?

Если вам нужно что-нибудь еще, дайте мне знать!

0

Так как я еще не могу прокомментировать. Вы пытались поместить его в asyncTask? или по завершении вашей буферизации это разыгрывается?.

То, что вы также можете сделать, это AsyncTask, вы можете изменить OnProgressUpdate(), который затем может воспроизводиться, когда вы достигли определенного буфера или полностью играете, когда он будет завершен.

  • 0
    Инициирование MediaPlayer / SurfaceView производится в mainthread. Для подготовки медиаданных (заполнения буферов) я использую MediaPlayer.prepareAsync (), который работает в своем собственном потоке. Что вы имеете в виду, я должен работать в AsyncTask-среде? (Кстати: поток не прогрессивный. Это данные с веб-камеры ...)
  • 0
    Хорошо ... Извините, я не знал, что это было так, как вы идете Я думал, что это видео в телефоне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню