16:31:14,725 INFO RestClient - API-ASYNC-pool-13-thread-1 SEND REST OBJECT ==>
URL:http://localhost:8081/apps/RoomApp/StreamStatusEvent
OBJECT:
{
"nodeId" : "qg4BeHzYSAtkhUkXgnSMEUZpsshaLPL5@95.191.130.39",
"appKey" : "roomApp",
"sessionId" : "/5.129.23.83:56526/95.191.130.39:8443-c9eacb99-2d0c-4543-8f25-6ba0c22e1f4f",
"mediaSessionId" : "0c08bea1-00d0-11ec-843d-898c18782773",
"name" : "room-1190f1-test1-0c08",
"published" : true,
"hasVideo" : true,
"hasAudio" : true,
"status" : "UNPUBLISHED",
...
"info" : "Stopped by publisher stop",
...
}
record: true
при публикации потока)Stop
в примере с отправкой unPublishStream
Disconnect
StreamStatusEvent
со статусом UNPUBLISHED
отправляется для publish-сессии один раз.ip_local
(как видно по логу) не рекомендуется, поскольку эта настройка задает локальный интерфейс сервера для привязки портов.ip
и ip_local
, как в файле flashphoner.properties
в архиве. Автоматическое определение адресов при старте в Вашей сборке работает только в инстансе AWS. В последних сборках автоматическое определение адресов при старте работает, только если скрипт запуска обнаруживает эндпойнты AWS или Google Cloud.flashphoner.properties
в архиве. В дальнейшем, крайне рекомендуется не вносить никаких изменений в предоставляемые данные, и собирать отчеты при помощи скрипта report.sh. В противном случае мы не сможем Вам помочь корректно диагностировать проблему.В таком случае, возможно, изменения в файл настроек были внесены до сбора логов, но без перезапуска сервера. С целью более точной диагностики, такое не допускается.Логи собирали по инструкции выше.
В таком случае мы можем только пытаться воспроизводить проблему.Предоставить доступ не представляется возможным.
Тогда проблема должна воспроизводиться в примере WebRTC as RTMP republishing с небольшой модификацией:Причину сузил, так случается если сделать unPublishStream и сразу сделать дисконект.
onStopped
, которая вызывается в обработчике STREAM_STATUS.UNPUBLISHED
function onStopped() {
$("#publishBtn").text("Start").off('click').click(publishBtnClick).prop('disabled', false);
...
if (Flashphoner.getSessions().length > 0) {
Flashphoner.getSessions()[0].disconnect();
}
}
function startStreaming(session) {
var streamName = field("streamName");
var rtmpUrl = field("rtmpUrl");
session.createStream({
name: streamName,
display: localVideo,
cacheLocalResources: true,
receiveVideo: false,
receiveAudio: false,
rtmpUrl: rtmpUrl,
record: true
}).on(STREAM_STATUS.PUBLISHING, function(publishStream){
...
}).publish();
}
/StreamStatusEvent
cо следующими полями: ...
"status" : "UNPUBLISHED",
...
"info" : "Stopped by publisher stop",
...
STREAM_STATUS.UNPUBLISHED
или STREAM_STATUS.FAILED
, как сделано во всех примерах, поставляемых вместе с WebSDK и WCS, поскольку и старт, и остановка публикации проходят асинхронно и включают обмен сообщениями между клиентом и сервером.Это не наш пакет, и он основан на устаревшей сборке WebSDK. Официальный NPM пакет доступен здесь: @flashphoner/websdkСоединение закрывает Ваш пакет(node_modules/@codevadmin/flashphoner-api/src/flashphoner-core.js:1974).
Session.disconnect()
, если страница не закрыта в браузере и сервер не закрыл соединение на своей стороне.На это есть тикет WCS-2738.Почему на StreamStatusEvent custom поля приходят, а на unPublishStream нет.
На это завели тикет WCS-3320.Так же "record" : true приходит StreamStatusEvent на unPublishStream же он false
"sessionId" : "/192.168.1.83:52618/192.168.1.39:8443-1c8c20c1-71b2-41c6-9e95-85bf346c14f7",
"mediaSessionId" : "f1450bd0-0ac2-11ec-987f-3b4d13bd936a",
"name" : "07673041",