Flash как альтернатива WebRTC

pride

Member
Здравствуйте! Интересует возможность использовать Flash если браузер пользователя не поддерживает WEBRTC.
В коде примеров вижу такие строки :
Code:
    try {
        Flashphoner.init({flashMediaProviderSwfLocation: '../../../../media-provider.swf'});
    } catch(e) {
        $("#notifyFlash").text("Your browser doesn't support Flash or WebRTC technology necessary for work of an example");
        return;
    }
Где как я понимаю flashMediaProviderSwfLocation служит в качестве альтернативы. Да вот только на деле этого не случаться получаю "Your browser doesn't support Flash or WebRTC technology necessary for work of an example".
Тестировал в IE8 Firefox с отключенным WEBRTC
 

pride

Member
Так же интересует будет ли эта Flash альтернатива работать с кастомными полями?
 

Max

Administrator
Staff member
В коде примеров вижу такие строки
Да, верно. Подгружается swf-файл и отвечает за отправку или отображение видео.
Когда в API вызывается session.createStream({display:videoDiv}).play(), то swf подгружается в указанный div:
Code:
var videoDiv = document.getElementById('videoDiv');
<div id="videoDiv"></div>
Flash поддерживается в IE 11.
Так же интересует будет ли эта Flash альтернатива работать с кастомными полями?
Да, будет. Так как обертка будет та же что и с WebRTC и будет работать через Websocket.
Flash отвечает только за видеопотоки.
 

pride

Member
Code:
Flash поддерживается в IE 11.
Только в ie 11. т.е другие браузеры не поддерживающие WEBRTC не смогут работать ?
Если да то есть какие либо выходы с этой ситуации ?
И интересует альтернативы для iOS и Safari.
 

Max

Administrator
Staff member
Только в ie 11. т.е другие браузеры не поддерживающие WEBRTC не смогут работать ?
На данный момент мы тестировали IE 11, Mac OS Safari, Edge.
В них должно работать, если установлен Adobe Flash Player последней версии (предыдущие версии плеера могут автоматически отключаться системой, например Mac Sierra, из-за проблем с уязвимостями).

Если да то есть какие либо выходы с этой ситуации ?
Альтернатива для браузеров IE10 и ниже, это использование плагина Temasys.
Можете попробовать подключить плагин, используя скрипт flashphoner-temasys-flash-websocket.js вместо flashphoner.js. В этом случае страница должна запросить установку WebRTC-плагина Temasys со стороннего сайта temasys.com.sg. Даже с плагином Temasys, в браузерах IE10 и ниже могут быть проблемы. Мы не планируем дальнейшую поддержку этих браузеров и самого Temasys. Но в случае проблем, вы можете их решить фиксами и пересборкой Web SDK, т.к. код открыт: https://github.com/flashphoner/flashphoner_client/tree/wcs_api-2.0

И интересует альтернативы для iOS и Safari.
Для iOS альтернативы три:
1. Websocket Player - только воспроизведение потока
2) iOS-приложение на базе iOS SDK
3) Дождаться поддержки WebRTC от Apple в браузерах iOS Safari или iOS Google Chrome.
 

Max

Administrator
Staff member
Еще одна альтернатива для браузеров IE10 и ниже - использовать чистый Flash для публикации и воспроизведения потоков.
Вы также можете написать к нему свою HTML/Javascript-обертку.
Для этого нужно написать собственное приложение на Action Script 3 или модифицировать существующее:
https://github.com/flashphoner/flas...ing/flash_client/streaming/src/streaming.mxml
https://wcs5-eu.flashphoner.com/demo2/flash-streaming
 

pride

Member
Еще одна альтернатива для браузеров IE10 и ниже - использовать чистый Flash для публикации и воспроизведения потоков.
Вы также можете написать к нему свою HTML/Javascript-обертку.
Для этого нужно написать собственное приложение на Action Script 3 или модифицировать существующее:
https://github.com/flashphoner/flas...ing/flash_client/streaming/src/streaming.mxml
https://wcs5-eu.flashphoner.com/demo2/flash-streaming
Спасибо за ответ, думаю это самый подходящий вариант.
Можно поподробнее о Websocket Player для Сафари и iOS . Как это реализовать ?
 

Max

Administrator
Staff member
Можно поподробнее о Websocket Player для Сафари и iOS . Как это реализовать ?
Websocket Player работает из коробки в примере Player
https://wcs5-eu.flashphoner.com/demo2/player
https://github.com/flashphoner/flashphoner_client/tree/wcs_api-2.0/examples/demo/streaming/player
Если WebRTC и Flash недоступны, то автоматический идет переключение на WSPlayer.
Code:
Flashphoner.init({
flashMediaProviderSwfLocation: '../../../../media-provider.swf',
receiverLocation: '../../dependencies/websocket-player/WSReceiver2.js',
decoderLocation: '../../dependencies/websocket-player/video-worker2.js',
preferredMediaProvider: mediaProvider
});
В коде можно увидеть, что подключаются два скрипта, реализующие Websocket Player:
  • WSReceiver2.js
  • video-worker2.js
По дальнейшим вопросам по Websocket Player просьба создать отдельную тему.
 

pride

Member
Подскажите, как передать custom поля из флеша при просмотре.

stream = new NetStream(connect);
stream.play('myStream', {user : '100' });

Не работает.
 

Max

Administrator
Staff member
При использоваии чистого Flash, custom поля передаются только в методе connect().
Code:
obj.custom = new Object();
obj.custom.token='123';
nc.connect(this.urlServer,obj);
Для стримов эти поля не передаются.
 

pride

Member
При использоваии чистого Flash, custom поля передаются только в методе connect().
Code:
obj.custom = new Object();
obj.custom.token='123';
nc.connect(this.urlServer,obj);
Для стримов эти поля не передаются.
При таком подходе, на Вэб сервер приходит вот так:
Code:
  custom:  { 
       data: { token: '222222', user: '111111' },
        keys: { user: 'java.lang.String', token: 'java.lang.String' } 
}
При чем на REST оно не передается.
 

pride

Member
Да, можно передать параметры в RTMP-адресе потока. В этом случае они также передаются в REST методе connect() при установке RTMP-соединения.
С этим вариантом на Вэб приходит нормально, но на REST его нет.
 

pride

Member
На REST должно передаваться, если при коннекте передан appKey = 'flashStreamingApp'
https://github.com/flashphoner/flas...lash_client/streaming/src/streaming.mxml#L120

Code:
        connection = new NetConnection();
        connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
        var obj:Object = new Object();
            obj.appKey = 'flashStreamingApp';
            obj.custom = new Object();
            obj.custom.token = 'ddddddddddd';
        connection.connect(UrlStr, obj);
Нечего на REST API нет.

В connect прилетело :
Code:
  custom:  { 
      data: { token: 'ddddddddddd' },
       keys: { token: 'java.lang.String' } 
}
 

Max

Administrator
Staff member
а вот при просмотре через REST client . Поле custom пусто
Как смотрите через REST клиент?
 
Top