Table of Contents |
---|
Example of streamer with recording of several published video streams in one session
...
On the screenshot below 5 streams are publishing and recording
Code of the example
...
Here host is the address of the WCS server.
...
Analyzing the code
To analyze the code, let's take the version of file several_streams_recording.js with hash 51703a2 ecbadc3 which is available available here and can be downloaded in build build 2.0.5.28.2753.141.212.
1. Initialization of the API
Flashphoner.init() code
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.init({flashMediaProviderSwfLocation: '../../../../media-provider.swf'}); |
2. Connection to server.
Flashphoner.createSession() code
Code Block | ||||
---|---|---|---|---|
| ||||
testSession = Flashphoner.createSession({urlServer: url}).on(SESSION_STATUS.ESTABLISHED, function (session) { addSessionStatusLog(session); //session connected, start playback publishStreams(session);... }).on(SESSION_STATUS.DISCONNECTED, function (session) { addSessionStatusLog(session); toInitialState();... }).on(SESSION_STATUS.FAILED, function (session) { addSessionStatusLog(session);... toInitialState(); }); |
3. Receiving the event confirming successful connection
ConnectionStatusEvent ESTABLISHED ESTABLISHED code
Code Block | ||||
---|---|---|---|---|
| ||||
testSession = Flashphoner.createSession({urlServer: url}).on(SESSION_STATUS.ESTABLISHED, function (session) { addSessionStatusLog(session); //session connected, start playback publishStreams(session); }).on(SESSION_STATUS.DISCONNECTED, function (session) { ... }); |
...
session.createStream(), publish() code
When stream is created, the following parameters are passed
...
StreamStatusEvent PUBLISHING code
Code Block | ||||
---|---|---|---|---|
| ||||
var stream = session.createStream({ ... }).on(STREAM_STATUS.PUBLISHING, function (stream) { checkCountStreams(); addStatusLog(stream); ... }); |
6. Streams count checking and publishing new streams until desired value is reached
Code Block | ||||
---|---|---|---|---|
| ||||
function checkCountStreams() { var $publishBtn = $("#publishBtn"); if ($publishBtn.text() === "Start" && $publishBtn.prop('disabled') ) { if (streams.length < $("#countStreams").val()) { publishStreams(session); } else { toRecordedState(); } } } |
7. Streaming stop
stream.stop() code
Code Block | ||||
---|---|---|---|---|
| ||||
function toRecordedState() { $("#publishBtn").text("Stop").off('click').click(function () { for (var i in streams) { streams[i].stop(); } streams = []; toInitialState(); }).prop('disabled', false); } |
...
StreamStatusEvent UNPUBLISHED code
Code Block | ||||
---|---|---|---|---|
| ||||
var stream = session.createStream({ ... }).on(STREAM_STATUS.UNPUBLISHED, function (stream) { checkCountStreams(); addStatusLog(stream); }).on(STREAM_STATUS.FAILED, function (stream) { ... }); |