...
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession({urlServer: url}).on(SESSION_STATUS.ESTABLISHED, function(session){
//session connected, start streaming
startStreaming(session);
}).on(SESSION_STATUS.DISCONNECTED, function(){
setStatus(SESSION_STATUS.DISCONNECTED);
onStopped();
}).on(SESSION_STATUS.FAILED, function(){
setStatus(SESSION_STATUS.FAILED);
onStopped();
}); |
...
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession({urlServer: url}).on(SESSION_STATUS.ESTABLISHED, function(session){ //session connected, start streaming startStreaming(session); }).on(SESSION_STATUS.DISCONNECTED, function(){ setStatus(SESSION_STATUS.DISCONNECTED); onStopped();... }).on(SESSION_STATUS.FAILED, function(){ setStatus(SESSION_STATUS.FAILED); onStopped();... }); |
4. Публикация видеопотока
...
Code Block | ||||
---|---|---|---|---|
| ||||
var constraints = { video: { width: parseInt($('#width').val()), height: parseInt($('#height').val()), frameRate: parseInt($('#fps').val()), type: "screen" } }; session.createStream({ name: streamName, display: localVideo, constraints: constraints }).on(STREAM_STATUS.PUBLISHING, function(publishStream){ /* * User can stop sharing screen capture using Chrome "stop" button. * Catch onended video track event and stop publishing. */ document.getElementById(publishStream.id()).srcObject.getVideoTracks()[0].onended = function (e) { publishStream.stop(); }; document.getElementById(publishStream.id()).addEventListener('resize', function(event){ resizeVideo(event.target); }); setStatus(STREAM_STATUS.PUBLISHING); //play preview session.createStream({ name: streamName, display: remoteVideo }).on(STREAM_STATUS.PLAYING, function(previewStream){ document.getElementById(previewStream.id()).addEventListener('resize', function(event){ resizeVideo(event.target); }); //enable stop button onStarted(publishStream, previewStream); }).on(STREAM_STATUS.STOPPED, function(){ publishStream.stop(); }).on(STREAM_STATUS.FAILED, function(){ //preview failed, stop publishStream if (publishStream.status() == STREAM_STATUS.PUBLISHING) { setStatus(STREAM_STATUS.FAILED); publishStream.stop(); } }).play(); }).on(STREAM_STATUS.UNPUBLISHED, function(){ setStatus(STREAM_STATUS.UNPUBLISHED); //enable start button onStopped(); }).on(STREAM_STATUS.FAILED, function(){ setStatus(STREAM_STATUS.FAILED); //enable start button onStopped(); }).publish(); |
5. Получение от сервера события, подтверждающего успешную публикацию потока
StreamStatusEvent PUBLISHED код
При получении данного события запускается проигрывание превью в отдельном элементе на странице при помощи session.createStream() и play()
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({
name: streamName,
display: localVideo,
constraints: constraints
}).on(STREAM_STATUS.PUBLISHING, function(publishStream){
/*
* User can stop sharing screen capture using Chrome "stop" button.
* Catch onended video track event and stop publishing.
*/
document.getElementById(publishStream.id()).srcObject.getVideoTracks()[0].onended = function (e) {
publishStream.stop();
};
document.getElementById(publishStream.id()).addEventListener('resize', function(event){
resizeVideo(event.target);
});
setStatus(STREAM_STATUS.PUBLISHING);
//play preview
session.createStream({
name: streamName,
display: remoteVideo
}).on(STREAM_STATUS.PLAYING, function(previewStream){
document.getElementById(previewStream.id()).addEventListener('resize', function(event){
resizeVideo(event.target);
});
//enable stop button
onStarted(publishStream, previewStream);
}).on(STREAM_STATUS.STOPPED, function(){
publishStream.stop();
}).on(STREAM_STATUS.FAILED, function(){
//preview failed, stop publishStream
if (publishStream.status() == STREAM_STATUS.PUBLISHING) {
setStatus(STREAM_STATUS.FAILED);
publishStream.stop();
}
}).play();
}).on(STREAM_STATUS.UNPUBLISHED, function(){
setStatus(STREAM_STATUS.UNPUBLISHED);
//enable start button
onStopped();
}).on(STREAM_STATUS.FAILED, function(){
setStatus(STREAM_STATUS.FAILED);
//enable start button
onStopped();
}).publish(); |
6. Получение от сервера события, подтверждающего успешное воспроизведение превью-потока
StreamStatusEvent PLAYING код
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({
name: streamName,
display: remoteVideo
}).on(STREAM_STATUS.PLAYING, function(previewStream){
document.getElementById(previewStream.id()).addEventListener('resize', function(event){
resizeVideo(event.target);
});
//enable stop button
onStarted(publishStream, previewStream);
}).on(STREAM_STATUS.STOPPED, function(){
publishStream.stop();
}).on(STREAM_STATUS.FAILED, function(){
//preview failed, stop publishStream
if (publishStream.status() == STREAM_STATUS.PUBLISHING) {
setStatus(STREAM_STATUS.FAILED);
publishStream.stop();
}
}).play(); |
7. Остановка воспроизведения видеопотока.
stream.stop() код
Code Block | ||||
---|---|---|---|---|
| ||||
function onStarted(publishStream, previewStream) {
$("#publishBtn").text("Stop").off('click').click(function(){
$(this).prop('disabled', true);
previewStream.stop();
}).prop('disabled', false);
} |
...
...
}).publish(); |
5. Получение от сервера события, подтверждающего успешную остановку воспроизведения публикацию потока.
StreamStatusEvent STOPPED PUBLISHING код
При получении этого события останавливается публикация потока при помощи publishStream.stopданного события запускается проигрывание превью в отдельном элементе на странице при помощи session.createStream() и play()
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: remoteVideo }).on(STREAM_STATUS.PLAYING, function(previewStream){ localVideo, constraints: constraints document}).getElementByIdon(previewStream.id()).addEventListener('resize'STREAM_STATUS.PUBLISHING, function(eventpublishStream){ /* resizeVideo(event.target); }); * User can stop sharing screen capture using Chrome "stop" button. * Catch onended //enable stop button video track event and stop publishing. onStarted(publishStream, previewStream); */ }).on(STREAM_STATUS.STOPPED, function()document.getElementById(publishStream.id()).srcObject.getVideoTracks()[0].onended = function (e) { publishStream.stop(); }; document.getElementById(publishStream.id()).on(STREAM_STATUS.FAILEDaddEventListener('resize', function(event){ //preview failed, stop publishStream resizeVideo(event.target); }); if (publishStream.status() == setStatus(STREAM_STATUS.PUBLISHING) { ; //play preview session.createStream({ setStatus(STREAM_STATUS.FAILED); name: streamName, publishStream.stop();display: remoteVideo } ... }).play(); |
9. Остановка публикации видеопотока по кнопке расширения Chrome
publishStream.stop(). код
Code Block | ||||
---|---|---|---|---|
| ||||
document.getElementById(publishStream.id()).srcObject.getVideoTracks()[0].onended = function (e) }).play(); }).on(STREAM_STATUS.UNPUBLISHED, function(){ ... publishStream.stop(); }).on(STREAM_STATUS.FAILED, function(){ ... }).publish(); |
106. Получение от сервера события, подтверждающего успешную остановку публикации потока.успешное воспроизведение превью-потока
StreamStatusEvent UNPUBLISHED PLAYING код
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: localVideo, remoteVideo }).on(STREAM_STATUS.PLAYING, function(previewStream){ constraints: constraints }document.getElementById(previewStream.id()).on(STREAM_STATUS.PUBLISHINGaddEventListener('resize', function(publishStreamevent){ /* * User can stop sharing screen capture using Chrome "stop" button. resizeVideo(event.target); }); * Catch onended//enable videostop trackbutton event and stop publishing. */onStarted(publishStream, previewStream); document.getElementById(publishStream.id()}).srcObject.getVideoTracks()[0].onended = function (e) on(STREAM_STATUS.STOPPED, function(){ publishStream.stop(); };... document}).getElementByIdon(publishStream.id()).addEventListener('resize'STREAM_STATUS.FAILED, function(event){ resizeVideo(event.target); ... }).play(); |
7. Остановка воспроизведения видеопотока.
stream.stop() код
Code Block | ||||
---|---|---|---|---|
| ||||
function onStarted(publishStream, });previewStream) { setStatus(STREAM_STATUS.PUBLISHING); //play preview session.createStream($("#publishBtn").text("Stop").off('click').click(function(){ name: streamName,$(this).prop('disabled', true); previewStream.stop(); display: remoteVideo }).on(STREAM_STATUS.PLAYING, function(previewStream){ }).prop('disabled', false); } |
8. Получение от сервера события, подтверждающего успешную остановку воспроизведения потока.
StreamStatusEvent STOPPED код
При получении этого события останавливается публикация потока при помощи publishStream.stop()
Code Block | ||||
---|---|---|---|---|
| ||||
document.getElementById(previewStream.id()).addEventListener('resize', function(event) session.createStream({ name: streamName, resizeVideo(event.target); display: remoteVideo }); .on(STREAM_STATUS.PLAYING, function(previewStream){ ... //enable stop button}).on(STREAM_STATUS.STOPPED, function(){ onStarted(publishStream, previewStreampublishStream.stop(); }).on(STREAM_STATUS.STOPPEDFAILED, function(){ publishStream.stop();... }).on(STREAM_STATUS.FAILED, function(){ play(); |
9. Остановка публикации видеопотока по кнопке расширения Chrome
publishStream.stop(). код
Code Block | ||||
---|---|---|---|---|
| ||||
document.getElementById(publishStream.id()).srcObject.getVideoTracks()[0].onended = function //preview failed, stop publishStream (e) { if (publishStream.statusstop() == STREAM_STATUS.PUBLISHING) { ; }; |
10. Получение от сервера события, подтверждающего успешную остановку публикации потока.
StreamStatusEvent UNPUBLISHED код
Code Block | ||||
---|---|---|---|---|
| ||||
setStatus(STREAM_STATUS.FAILED); session.createStream({ name: streamName, publishStream.stop(); display: localVideo, constraints: constraints }).on(STREAM_STATUS.PUBLISHING, function(publishStream){ }).play();... }).on(STREAM_STATUS.UNPUBLISHED, function(){ setStatus(STREAM_STATUS.UNPUBLISHED); //enable start button onStopped(); }).on(STREAM_STATUS.FAILED, function(){ setStatus(STREAM_STATUS.FAILED); //enable start button onStopped();... }).publish(); |