Не удается развернуть сервер

Ras2607

Member
Здравствуйте!
Оплатил лицензию на месяц.
Устанавливаю дистрибутив на чистый сервер.
Поставил java-8u151
Поставил flashphoner по инструкции v. 0.5.25.2455 - 5.0.2513
лицензию подключил
сертификат ssl загрузил
панелька :8888 открывается нормально
но в ней при попытке подключится по wss просто подвисает кнопка, ничего не происходит, никаких ошибок не видно.
скриншот прилагаю


минут через 5 появляется серая надпись disconnected и в консоль браузера падает ошибка:
webSocket is already in CLOSING or CLOSED state.

результат выполнения netstat -nlp | grep java
tcp 0 0 0.0.0.0:554 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:1098 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:843 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 9266/java
tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 9266/java
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:34549 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:50999 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 9266/java
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:8444 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:8445 0.0.0.0:* LISTEN 9691/java
tcp 0 0 0.0.0.0:9091 0.0.0.0:* LISTEN 9266/java
udp 0 0 0.0.0.0:1935 0.0.0.0:* 9691/java

пытался найти что-то в логах, но явных ошибок не разглядел. куда надо смотреть и в чем может быть причина?
 

Max

Administrator
Staff member
В поле wss:// доменное имя указываете? Если указывать IP, то соединение не пройдет. Т.к. сертификат для домена.
Еще нужно проверить что порт открыт и доступен
Code:
telnet mydomain.com 8443
 

Ras2607

Member
указывается домен самой системой по умолчанию.
а вот с портом похоже проблема:
Connection closed by foreign host

но выполняю netstat -ntpua | grep 8443
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 9691/java
tcp 0 0 46.229.220.120:8443 94.250.254.138:53557 ESTABLISHED 9691/java
 

Ras2607

Member
может тут дело быть в каких-то хитрых настройках ip адресов? локальных и публичных?
 

Max

Administrator
Staff member
Убедитесь что порт 8443 открыт на firewall.
И что сертификат импортирован корректно. Можно попробовать браузер закрыть и снова открыть.
Если не работает, пришлите нам ssh доступ и путь к папке на сервере, где лежат сертификаты. Проверим.
logs@flashphoner.com
 

Max

Administrator
Staff member
На Debian / Ubuntu иногда встречается такая проблема, требующая корректировки hostname

Сделали следующее. Показываем на примере нашего демо-сервера wcs5-eu чтобы не публиковать адрес вашего сайта.
1. Установили нормальное имя хоста:
Code:
hostname wcs5-eu.flashphoner.com
2. Прописали его в /etc/hostname
Code:
hostname > /etc/hostname
3. Прописали имя хоста и IP в /etc/hosts
Code:
cat '46.101.108.90 wcs5-eu.flashphoner.com' >> /etc/hosts
4. Перезагрузили WCS.
Code:
service webcallserver restart
После этого заработало.
В документации есть рекомендация прописать hostname в файле /etc/hosts, но похоже до нее достаточно сложно добраться. Возможно попробуем с этим что-нибудь сделать, например вносить hostname в /etc/hosts при установке.
https://flashphoner.com/docs/wcs5/w...ndex.html?troubleshooting-troubleshooting.htm
3. Убедитесь, что имя хоста вашего сервера (Linux команда hostname) корректно резолвится в IP адрес в файле /etc/hosts. Команда ping yourhost должна работать, где yourhost - имя вашего хоста, которое выводится при вызове команды 'hostname' в Linux.
 

Ras2607

Member
Ох, действительно не очевидное решение. Если его можно автоматизировать, то сделайте - кучу времени сэкономите как клиентам, столкнувшимся с этим, так и себе.
Спасибо за оперативное решение!
 

Ras2607

Member
Чтобы не плодить новых тем, задам вопросы здесь же.

записать файл с кириллическим именем ведущего не получается, видимо все дело в том, что файл по умолчанию содержит его имя и видимо кириллица не поддерживается.
ковырял конфиги и нашел параметр stream_record_policy_template
вроде бы изменил его, сделал рестарт вебколсервера, но имя ведущего все-равно попало в название (тестирую пока с латинскими буквами).
Соответственно вопросы:
1. где можно почитать про рашсифровку параметров из которых можно формировать имя файлов при сохранении?
имею ввиду вот эти {streamName}-{startTime}-{sessionId}-{mediaSessionId}-{login}-{audioCodec}-{videoCodec}
2. конкретней - как настроить все так, чтобы имя ведущего сюда не попадало, а имя комнаты (используется roomapi) попало.
3. а так же есть ли возможность распределять записи по папкам с id комнаты в названии?
 

Ras2607

Member
а, даже не в кирилице дело!
неверно диагностировал проблему. Дело в пробеле в имени ведушего, не важно какой язык
 

Ras2607

Member
идеальное решение:
в имени записи нет имени ведущего
записи падают по папкам с id комнаты
в имени записи вообще только время старта или какое-то id сгенерированное
такое реально?
 

Ras2607

Member
и еще один вопрос. на записи очень сильно "прыгает" качество. То все видно четко, то сплошная размытость.
Можно ли как-то это регулировать в настройках? чтобы запись шла в наилучшем качестве?
 

Max

Administrator
Staff member
и еще один вопрос. на записи очень сильно "прыгает" качество. То все видно четко, то сплошная размытость.
Можно ли как-то это регулировать в настройках? чтобы запись шла в наилучшем качестве?
Попробуйте с кодеком VP8.
В настройках flashphoner.properties поменять в настройке codes=
местами кодеки h264 и vp8, чтобы vp8 был впереди.
После этого запись будет в WebM формате и качество должно стать лучше.
 

Ras2607

Member
запись действительно стала немного получше, благодарю.
вопрос про имя файла в принципе уже не актуален - сделали свое решение.
но невозможность сохранить запись с настройками по умолчанию, если в имени ведущего есть пробел - это явно косяк.

теперь вопрос следующего характера:
запись сделали, сохранили в какой-то папке (используя скрипт on_record_hook.sh)
у вас есть возможность транслировать VoD через embed плеер, это я уже нашел.
но чтобы запустить его видео должно лежать в папке /usr/local/FlashphonerWebCallServer/media
это очень не удобно, особенно если учесть что видео вообще может переехать во внешнее хранилище.
как-то можно решить этот вопрос? сменить в настройках папку откуда брать видео или же другим путем?
 

Max

Administrator
Staff member
это очень не удобно, особенно если учесть что видео вообще может переехать во внешнее хранилище.
как-то можно решить этот вопрос? сменить в настройках папку откуда брать видео или же другим путем?
Можно сделать так
# удаляем папку media
Code:
rm -Rf media
# делаем ярлык на папку records
Code:
ln -sf /usr/local/FlashphonerWebCallServer/records sf /usr/local/FlashphonerWebCallServer/media
В результате можно забирать vod://stream.mp4 и файлы будут забираться из records.

Обратите внимание, vod играет mp4 файлы. WebM он играть скорее всего не будет.
Попробуйте лучше сделать webM файл доступным по HTTP и играть его просто в тэге <video>.
Для работы vod, потребуется постконвертация этого файла в mp4.
 

Ras2607

Member
просто в видео не пойдет, так как нужно исключить возможность скачивания, нужен именно поток. так что я так понимаю либо конвертировать webm после записи (через например ffmpeg), либо записывать именно в mp4.
требуется записывать показ рабочего стола, сделали это как у вас в примере через плагин. но что в само комнате качество сильно урезается, что на записи очень много артефактов и размытостей, даже в webm.

вопрос по поводу качества записи все еще актуален. какие настройки надо выставить чтобы сделать его максимальным?
 

Max

Administrator
Staff member
Попробуйте добавить в настройки flashphoner.properties
Code:
webrtc_cc_min_bitrate=500000
После этого попробуйте протестировать со стандартным примером на разрешении 1280x720
https://wcs5-eu.flashphoner.com/client2/examples/demo/streaming/screen-sharing/screen-sharing.html
(на вашем сервере пример Demo / Screen Sahring)
Code:
 session.createStream({
        name: streamName,
        display: localVideo,
        constraints: constraints,
        record: true
    });
Есть ли разница, когда записываете с вашего приложения и когда записываете со стандартного примера?
Выложите пожалуйста примеры записи и обновите доступ к серверу. Зайдем, проверим.
Настройка webrtc_cc_min_bitrate должна предотвратить просадки битрейта и улучшить запись.
 

Ras2607

Member
О, благодарю, действительно стало лучше. Размытостей практически нет, отлично
 

Max

Administrator
Staff member
1. где можно почитать про рашсифровку параметров из которых можно формировать имя файлов при сохранении?
имею ввиду вот эти {streamName}-{startTime}-{sessionId}-{mediaSessionId}-{login}-{audioCodec}-{videoCodec}
2. конкретней - как настроить все так, чтобы имя ведущего сюда не попадало, а имя комнаты (используется roomapi) попало.
3. а так же есть ли возможность распределять записи по папкам с id комнаты в названии?
При использовании Room API, имя потока, которое уходит от пользователя на сервер будет таким:
Code:
room-6acbcc-5588-5134
Здесь:
6acbcc - сгенерированный уникальный идентификатор комнаты
5588 - логин пользователя.
5134 - сгенерированный уникальный идентификатор потока.

По умолчанию файл записи будет иметь имя:
Code:
stream-123123123123-5588
Здесь:
123123123123 - внутренний уникальный ID потока (mediaSessionId)
5588 - логин пользователя.

Поэтому, если логин пользователя содержит пробелы, то будут проблемы.
Можно исключить логин пользователя из шаблона имени записываемого файла, например так:
Code:
stream_record_policy=template
stream_record_policy_template=stream-{mediaSessionId}
Тогда будет имя файла без логина.
Или так:
Code:
stream_record_policy=template
stream_record_policy_template={streamName}-{startTime}-{sessionId}-{mediaSessionId}-{audioCodec}-{videoCodec}
Так имя файла будет содержать максимум информации, о не содержать логин.
 

Max

Administrator
Staff member
Значения полей:
Code:
streamName - имя потока
startTime - время начала стрима
sessionId - уникальный ID пользователя внутри сервера
mediaSessionId - уникальный ID стрима
audioCodec - кодек аудио
videoCodec - кодек видео
 
Top