Advertisement
Guest User

Igor

a guest
Oct 24th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function startPresenter(sessionId, ws, sdpOffer, callback) {
  2.   clearCandidatesQueue(sessionId);
  3.  
  4.   if (presenter !== null) {
  5.     stop(sessionId);
  6.     return callback("Another user is currently acting as presenter. Try again later ...");
  7.   }
  8.  
  9.   presenter = {
  10.     id: sessionId,
  11.     pipeline: null,
  12.     webRtcEndpoint: null
  13.   };
  14.  
  15.   getKurentoClient(function (error, kurentoClient) {
  16.     if (error) {
  17.       stop(sessionId);
  18.       return callback(error);
  19.     }
  20.  
  21.     if (presenter === null) {
  22.       stop(sessionId);
  23.       return callback(noPresenterMessage);
  24.     }
  25.  
  26.  
  27.     kurentoClient.create('MediaPipeline', function (error, pipeline) {
  28.       if (error) {
  29.         stop(sessionId);
  30.         return callback(error);
  31.       }
  32.  
  33.       if (presenter === null) {
  34.         stop(sessionId);
  35.         return callback(noPresenterMessage);
  36.       }
  37.  
  38.       presenter.pipeline = pipeline;
  39.       var elements =
  40.       [
  41.         {type: 'RecorderEndpoint', params: {
  42.           stopOnEndOfStream: true,
  43.           //@todo add a node identifier to the filename
  44.           uri : 'file:///tmp/podcast-.webm',
  45.           mediaProfile : 'MP4_AUDIO_ONLY'
  46.         }},
  47.         {type: 'WebRtcEndpoint', params: {}},
  48.         {type: 'PlayerEndpoint', params: {
  49.           // mediaPipeline: presenter.pipeline,
  50.           uri : 'http://ic-test.surge.sh/cut.mp3',
  51.           useEncodedMedia : true
  52.         }}
  53.       ];
  54.  
  55.       presenter.pipeline.create(elements, function (error, elements) {
  56.         if (error) {
  57.           stop(sessionId);
  58.           console.log(5)
  59.           return callback(error);
  60.         }
  61.  
  62.         recorder = elements[0];
  63.         player = elements[2];
  64.        
  65.         var webRtcEndpoint = elements[1];
  66.  
  67.         if (presenter === null) {
  68.           stop(sessionId);
  69.           console.log(6)
  70.           return callback(noPresenterMessage);
  71.         }
  72.  
  73.  
  74.         pipeline.create("Composite", function(error, _composite) {
  75.           if (error) return onerror(error);
  76.           composite = _composite;
  77.         });
  78.  
  79.         presenter.webRtcEndpoint = webRtcEndpoint;
  80.        
  81.         if (candidatesQueue[sessionId]) {
  82.           while (candidatesQueue[sessionId].length) {
  83.             var candidate = candidatesQueue[sessionId].shift();
  84.             webRtcEndpoint.addIceCandidate(candidate);
  85.           }
  86.         }
  87.         webRtcEndpoint.on('OnIceCandidate', function (event) {
  88.           var candidate = kurento.register.complexTypes.IceCandidate(event.candidate);
  89.           ws.send(JSON.stringify({
  90.             id: 'iceCandidate',
  91.             candidate: candidate
  92.           }));
  93.         });
  94.  
  95.         webRtcEndpoint.processOffer(sdpOffer, function(error, sdpAnswer) {
  96.           if (presenter === null) {
  97.             stop(sessionId);
  98.             console.log(8)
  99.             return callback(noPresenterMessage);
  100.           }
  101.  
  102.           webRtcEndpoint.gatherCandidates(function(error, result) {
  103.             if (result) console.log(result);
  104.             console.log("Gathering candidates...");
  105.           });
  106.  
  107.           callback(null, sdpAnswer);
  108.  
  109.           presenter.pipeline.connect(webRtcEndpoint, webRtcEndpoint, recorder, function(error){
  110.             if (error) {
  111.               stop(sessionId);
  112.               console.log(10)
  113.               return onError(error);
  114.             }
  115.  
  116.             recorder.record(function(error) {
  117.               if (error) return onError(error);
  118.             });
  119.  
  120.             console.log( recorder )
  121.           });
  122.  
  123.           presenter.pipeline.connect(webRtcEndpoint, webRtcEndpoint, player, function(error){
  124.             if (error) {
  125.               stop(sessionId);
  126.               console.log(10)
  127.               return onError(error);
  128.             }
  129.  
  130.             player.on('EndOfStream', function() {
  131.               console.log('END OF STREAM');
  132.             });
  133.  
  134.             player.play(function(error) {
  135.               console.log('play or not play')
  136.               if (error) return onError(error);
  137.             });
  138.           });
  139.         });
  140.  
  141.       });
  142.  
  143.     });
  144.  
  145.   });
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement