RTSP streaming with auth

Anton K

New Member
Добрый день!

Имеется IP-камера, которая отдает rtsp-поток в виде: rtsp://user:pass@1.1.1.1/h264 (вещание только после аутентификации).
Установлен WebRTC-сервер на Flashphoner (ip=2.2.2.2) и на работу с ним настроен веб-клиент. При попытке открыть через браузер ссылку: http://2.2.2.2/index.html?id=rtsp://user:pass@1.1.1.1/h264
окно плеера показывает Proceccing.. и ничего не происходит.

В логах сервера:
15:17:47,587 INFO TCMediaServerHandler - New I/O worker #9 connect client: WSClient{channel=[id: 0x343dd4b6, /3.3.3.3:55577 => /2.2.2.2:8080], handler=com.flashphoner.server.client.WebRTCMediaServerHandler@651f41fd, closed=
false, pageUrl='null', countUnansweredPing=0}
15:17:47,590 INFO TCMediaServerHandler - New I/O worker #9 connect connected client: ClientConfig{webRTCMedia=true, rtspMedia=false, login='cmb721p0345ckttt9mhgeqf03s', authenticationName='null', password='null', domain='null', outboundProxy='null', localPort=-1, port=0, visibleName='null', regRequired=false, applicationName='null', swfUrl='null', pageUrl='null', useProxy=true, qValue='null', pAssociatedUri='null', contactParams='null'}
15:17:48,589 INFO TCMediaServerHandler - New I/O worker #9 prepareRtspSession - CallArguments{arguments=[TransferObject{dataMap={rtspUri=rtsp://user:1@1.1.1.1/h264}}]}
15:17:48,591 INFO TCMediaServerHandler - New I/O worker #9 connect client: com.flashphoner.server.A.D@6caf4065
15:17:48,592 INFO TCMediaServerHandler - New I/O worker #9 connect connected client: ClientConfig{webRTCMedia=false, rtspMedia=true, login='2hhbkj2bc4d67dkrghuu716hi4', authenticationName='null', password='null', domain='null', outboun
dProxy='null', localPort=-1, port=0, visibleName='null', regRequired=false, applicationName='null', swfUrl='null', pageUrl='null', useProxy=true, qValue='null', pAssociatedUri='null', contactParams='null'}
15:17:48,601 ERROR RtspAgent - New I/O worker #89 Received bad response 401 Unauthorized, aborting
15:17:48,601 INFO RtspAgent - New I/O worker #89 Shutdown RtspClient rtsp://user:1@1.1.1.1/h264

Через проигрыватель VLC rtsp-поток с ip-камеры отображается корректно (с логином и паролем).
Подскажите, пожалуйста, есть ли возможность вещать через Flashphoner rtsp-поток с предварительной аутентификацией? Т.е. передать через Flashphoner логин и пароль для аутентификации на IP-камере и затем получать поток с нее.

Спасибо.
 

Max

Administrator
Staff member
В конфиге conf/rtsp.auth
Code:
rtsp://demo:demo@demo.true-ip.ru:554/cam/realmonitor?channel=1&subtype=0 admin admin
rtsp://demo2:demo@demo.true-ip.ru:554/cam/realmonitor?channel=1&subtype=0 admin admin
Если такого конфига нет, установите последнюю версию Web Call Server 4. Там точно такой конфиг есть. В нем задается аутентификация RTSP-клиента.
 

Anton K

New Member
Спасибо, помогло. RTSP-auth работает, но картинка в браузере черная (трансляции нет).

В логах сервера есть ошибка:
15:05:17,743 ERROR MediaHandler - New I/O worker #33 publishStream exception
java.lang.IllegalArgumentException: hostname can't be null

Через некоторое время сервер закрывает канал:
15:06:00,678 INFO MediaPortsManager - Timer-0 audit elapsed: 0 free: 498 busy: 2 quarantine: 0 leaked: 0 [[]] --> free: 498 busy: 2 quarantine: 0 leaked: 0 [[]]
15:06:01,679 INFO MediaPortsManager - Timer-0 audit elapsed: 0 free: 498 busy: 2 quarantine: 0 leaked: 0 [[]] --> free: 498 busy: 2 quarantine: 0 leaked: 0 [[]]
15:06:02,028 INFO RtspAgent - New I/O worker #33 Channel closed
15:06:02,028 INFO RtspAgent - New I/O worker #33 Shutdown RtspClient rtsp://172.16.132.90/h264

Сервер (имеет 1 серый ip), камера, веб-клиент и браузер (рабочее место) находятся в локалке, соответственно они с серыми адресами. В конфиге flashphoner.properties параметр "ip" указал реальный белый ip (статический от провайдера).
Подключение из вне (3G от МТС) вообще до сервера не доходит (в логах чисто), браузер пишет "The publishing is stopped." (правила NAT делал по admin guide). При этом делаю telnet внешний_ip 8080 в логах сервера вижу:
WARN WSServerHandler - New I/O worker #11 Close channel because: java.lang.IllegalArgumentException 'empty text'
А через веб-клинет - тишина.

2 вопроса:
1. Почему не работает стриминг в локалке? Ошибка "hostname can't be null".
2. Работает ли вещание во внешний мир через NAT?
 

Max

Administrator
Staff member
В локалке должен играть.
Выглядит примерно так:
192.168.1.44 - адрес WCS-сервера
192.168.1.34 - адрес RTSP-камеры
Попробуйте забрать ваш поток с VLC rtsp://172.16.132.90/h264. Будет играть?

1. Почему не работает стриминг в локалке? Ошибка "hostname can't be null".
Скорее всего, что-то простое. Присоедините полный лог logs/server_logs/flashphoner.log и настройки сервера из flashphoner.properties. Проверим.

2. Работает ли вещание во внешний мир через NAT?
Да, должно работать если правильно прокинуты порты. По-умолчанию нужны 554 TCP, 30000-33000 UDP.

Кроме этого проверьте, поддерживает ли ваша камера interleave mode (TCP).
WCS по умолчанию использует
Code:
rtsp_interleaved_mode = true
, т.е. соединяется с камерой(RTSP-сервером) по TCP.
Попробуйте поставить в false. В этом случае будет задействован диапазон UDP портов.

local-IP-Cam-WebRTC-RTSP-Stream.jpg
 

Anton K

New Member
Получилось из вне (и в локалке) установить соединение: в настройках веб-клиента flashphoner.xml в секции сервера указал внешний ip Web Call Server (а ранее указывал локальный).

А вот вещания с ip-камеры пока нет, все та же ошибка: hostname can't be null.
Из внешней сети VLC камеру подхватывает успешно.
 

Anton K

New Member
В локалке должен играть.
Выглядит примерно так:
192.168.1.44 - адрес WCS-сервера
192.168.1.34 - адрес RTSP-камеры
Попробуйте забрать ваш поток с VLC rtsp://172.16.132.90/h264. Будет играть?
Да, VLC играет.

Скорее всего, что-то простое. Присоедините полный лог logs/server_logs/flashphoner.log и настройки сервера из flashphoner.properties. Проверим.
Присоединил.

Кроме этого проверьте, поддерживает ли ваша камера interleave mode (TCP).
WCS по умолчанию использует
Code:
rtsp_interleaved_mode = true
, т.е. соединяется с камерой(RTSP-сервером) по TCP.
Попробуйте поставить в false. В этом случае будет задействован диапазон UDP портов.
На камере (Beward bd43c) настройки потока такие:
- RTP поверх UDP
- RTP поверх RTSP(TCP)

Сейчас включен RTP поверх RTSP(TCP) и rtsp_interleaved_mode = true (делал и первый вариант + в конфиге false -- тоже самое).
 

Attachments

Max

Administrator
Staff member
Сбросьте пожалуйста логин и пароль камеры на адрес logs@flashphoner.com
Попробуем к ней подцепится. Из лога не понятно что происходит.
 

Max

Administrator
Staff member
На сайте должна быть доступна последняя сборка сервера 1315
http://flashphoner.com/wcs4#download
Попробуйте обновиться до этой версии.

И еще в конфиге flashphoner.xml на стороне клиента уберите кодеки вот такой настройкой:
Code:
<strip_codecs>opus,OPUS,ISAC,CN,G722</strip_codecs>
Откройте xml файл в браузере чтобы убедиться что он не закэшировался.

После этого видео должно появиться.
 

Anton K

New Member
Обновил сервер, клиента, отключил кодеки, видео не появилось.
В логах:
09:41:54,018 INFO RtspAgent - New I/O worker #41 Channel closed
09:41:54,019 INFO RtspAgent - New I/O worker #41 Shutdown RtspClient rtsp://1.1.1.1/h264
09:41:54,019 ERROR RtspAgent - New I/O worker #41 Failed to send TEARDOWN request to server!
com.flashphoner.my_flashphoner.licenser_agent.B.A.B: Connection to server was closed
at com.flashphoner.server.A.F.A(Unknown Source)
at com.flashphoner.server.A.F.V(Unknown Source)
at com.flashphoner.server.A.F$1$1.operationComplete(Unknown Source)
 

Anton K

New Member
Версия 4.0.1319:
- в Firefox 39 картинка черная, через некоторое время ERROR RtspAgent - New I/O worker #41 Failed to send TEARDOWN request to server
- в Chrome есть видео, но через минуту видео замирает, в логах ERROR RtspAgent - New I/O worker #41 Failed to send TEARDOWN request to server

Далее, чтобы восстановить видео в Chrome требуется перезапуск сервера (иначе черный квадрат в плеере).
 

Max

Administrator
Staff member
Спасибо, удалось это воспроизвести с вашей камерой.
Поведение специфичное при работе именно вашим девайсом. Когда тестируем со своими IP-камерами Dlink, этого не происходит. Работает долго и стабильно.
Дайте пожалуйста ссылку на спецификацию вашей камеры. Постараемся в течение недели разобраться и исправить. Камеру просьба не выключать если есть возможность.
 

Anton K

New Member
Камера Beward BD43C, спецификация на сайте производителя: http://www.beward.ru/katalog/ip-videokamery/ip-kamery-serii-bd/ip-kamera-bd43c/
Она будет включена, можно подключаться.
Вопрос про браузеры. Черная картинка в Firefox это особенность камеры или все-таки код веб-клиента (который работает только в Chrome)?
 

Max

Administrator
Staff member
Протестировали подключение к вашей камере в UDP и interleave mode. Похоже камера сбрасывает соединение.
С VLC проблема та же, через 45 секунд соединение рвется.
Предположительно дело в настройках/прошивке камеры или в сети.
В дампах видно, что камера через некоторое время перестает посылать аудио и видео и начинает отправлять 'RTSP Continuation', далее соединение завершается со стороны камеры.
rtsp-continuation.jpg
 

Anton K

New Member
Протестировали подключение к вашей камере в UDP и interleave mode. Похоже камера сбрасывает соединение.
С VLC проблема та же, через 45 секунд соединение рвется.
У нас иначе: запускаю веб-клиент и VLC на одном компьютере, через некоторое время в браузере картинка замирает (у сервера ошибка TEARDOWN), а VLC без изменений - вещание идет.

Предположительно дело в настройках/прошивке камеры или в сети.
В дампах видно, что камера через некоторое время перестает посылать аудио и видео и начинает отправлять 'RTSP Continuation', далее соединение завершается со стороны камеры.
Помимо RTSP (UDP/TCP) данная камера умеет:
- RTSP поверх HTTP
- MJPEG поверх HTTP
- Мультикаст
Может ли сервер обрабатывать такие потоки?
 

Max

Administrator
Staff member
- RTSP поверх HTTP
- MJPEG поверх HTTP
- Мультикаст
Такие потоки, к сожалению, не поддерживаются.
 
Top