...
Для разбора кода возьмем версию файла player.js с хешем cf0daabc6b86e21d5a2f9e4605366c8b7f0d27eb66cc393, которая находится здесь и доступна для
скачивания в соответствующей сборке 0.5.328.182753.1894133.
1. Инициализация API.
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.init({ flashMediaProviderSwfLocation: '../../../../media-provider.swf', receiverLocation: '../../dependencies/websocket-player/WSReceiver2.js', decoderLocation: '../../dependencies/websocket-player/video-worker2.js', preferredMediaProvider: mediaProvider }); |
2. Подключение к серверу.
Flashphoner.createSession() код code
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession({urlServer: url}).on(SESSION_STATUS.ESTABLISHED, function(session){ setStatus(session.status()); //session connected, start playback playStream(session); }).on(SESSION_STATUS.DISCONNECTED, function(){ setStatus(SESSION_STATUS.DISCONNECTED); onStopped(); }).on(SESSION_STATUS.FAILED, function(){ setStatus(SESSION_STATUS.FAILED); onStopped(); }); |
3. Получение от сервера события, подтверждающего успешное соединение.
ConnectionStatusEvent ESTABLISHED кодESTABLISHED code
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession({urlServer: url}).on(SESSION_STATUS.ESTABLISHED, function(session){ setStatus(session.status()); //session connected, start playback playStream(session); }).on(SESSION_STATUS.DISCONNECTED, function(){ ... }).on(SESSION_STATUS.FAILED, function(){ ... }); |
...
session.createStream(), play() кодПри создании передается имя видеопотока streamName, а также code
Code Block | ||||
---|---|---|---|---|
| ||||
stream = session.createStream(options).on(STREAM_STATUS.PENDING, function (stream) {
...
});
stream.play(); |
При создании передаются:
- streamName - имя видеопотока
- remoteVideo - div-элемент, в котором будет отображаться видео
...
- разрешение, к которому должна быть транскодирована картинка
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream(var options = { name: streamName, display: remoteVideo, ...flashShowFullScreenButton: true }).play(); |
5. Получение от сервера события, подтверждающего успешное воспроизведение потока
StreamStatusEvent PLAYING код
Code Block | ||||
---|---|---|---|---|
| ||||
; if (Flashphoner.getMediaProviders()[0] === "MSE" && mseCutByIFrameOnly) { session.createStream(options.mediaConnectionConstraints = { namecutByIFrameOnly: streamName,mseCutByIFrameOnly } display: remoteVideo} }).on(STREAM_STATUS.PLAYING, function(stream) { if (resolution_for_wsplayer) { options.playWidth = resolution_for_wsplayer.playWidth; options.playHeight = resolution_for_wsplayer.playHeight; } else if (resolution) { options.playWidth = resolution.split("x")[0]; options.playHeight = documentresolution.getElementById(stream.id()).addEventListener('resize', function(event)split("x")[1]; } |
5. Получение от сервера события, подтверждающего успешное воспроизведение потока
StreamStatusEvent PLAYING code
Code Block | ||||
---|---|---|---|---|
| ||||
stream = session.createStream(options).on(STREAM_STATUS.PENDING, function (stream) { ... resizeVideo(event.target);}).on(STREAM_STATUS.PLAYING, function (stream) { }$("#preloader").hide(); setStatus(stream.status()); onStarted(stream); }).on(STREAM_STATUS.STOPPED, function() { ... }).on(STREAM_STATUS.FAILED, function() { ... }); stream.play(); |
6. Остановка воспроизведения видеопотока.
Code Block | ||||
---|---|---|---|---|
| ||||
function onStarted(stream) {
$("#playBtn").text("Stop").off('click').click(function(){
$(this).prop('disabled', true);
stream.stop();
}).prop('disabled', false);
...
} |
7. Получение от сервера события, подтверждающего успешную остановку воспроизведения потока
StreamStatusEvent STOPPED код code
Code Block | ||||
---|---|---|---|---|
| ||||
stream = session.createStream({ name: streamName, display: remoteVideo }options).on(STREAM_STATUS.PLAYINGPENDING, function (stream) { ... }).on(STREAM_STATUS.STOPPED, function () { $("#preloader").hide(); setStatus(STREAM_STATUS.STOPPED); onStopped(); }).on(STREAM_STATUS.FAILED, function() { ... }).play(); |
8. Регулировка громкости воспроизведения
stream.unmuteRemoteAudio(), stream.setVolume(currentVolumeValue) code
Code Block | ||||
---|---|---|---|---|
| ||||
$("#volumeControl").slider({ range: "min", min: 0, max: 100, value: currentVolumeValue, step: 10, animate: true, slide: function(event, ui) { //WCS-2375. fixed autoplay in ios safari stream.unmuteRemoteAudio(); currentVolumeValue = ui.value; stream.setVolume(currentVolumeValue); } }).slider("disable"); |