Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function startPresenter(sessionId, ws, sdpOffer, callback) {
- clearCandidatesQueue(sessionId);
- if (presenter !== null) {
- stop(sessionId);
- return callback("Another user is currently acting as presenter. Try again later ...");
- }
- presenter = {
- id: sessionId,
- pipeline: null,
- webRtcEndpoint: null
- };
- getKurentoClient(function (error, kurentoClient) {
- if (error) {
- stop(sessionId);
- return callback(error);
- }
- if (presenter === null) {
- stop(sessionId);
- return callback(noPresenterMessage);
- }
- kurentoClient.create('MediaPipeline', function (error, pipeline) {
- if (error) {
- stop(sessionId);
- return callback(error);
- }
- if (presenter === null) {
- stop(sessionId);
- return callback(noPresenterMessage);
- }
- presenter.pipeline = pipeline;
- var elements =
- [
- {type: 'RecorderEndpoint', params: {
- stopOnEndOfStream: true,
- //@todo add a node identifier to the filename
- uri : 'file:///tmp/podcast-.webm',
- mediaProfile : 'MP4_AUDIO_ONLY'
- }},
- {type: 'WebRtcEndpoint', params: {}},
- {type: 'PlayerEndpoint', params: {
- // mediaPipeline: presenter.pipeline,
- uri : 'http://ic-test.surge.sh/cut.mp3',
- useEncodedMedia : true
- }}
- ];
- presenter.pipeline.create(elements, function (error, elements) {
- if (error) {
- stop(sessionId);
- console.log(5)
- return callback(error);
- }
- recorder = elements[0];
- player = elements[2];
- var webRtcEndpoint = elements[1];
- if (presenter === null) {
- stop(sessionId);
- console.log(6)
- return callback(noPresenterMessage);
- }
- pipeline.create("Composite", function(error, _composite) {
- if (error) return onerror(error);
- composite = _composite;
- });
- presenter.webRtcEndpoint = webRtcEndpoint;
- if (candidatesQueue[sessionId]) {
- while (candidatesQueue[sessionId].length) {
- var candidate = candidatesQueue[sessionId].shift();
- webRtcEndpoint.addIceCandidate(candidate);
- }
- }
- webRtcEndpoint.on('OnIceCandidate', function (event) {
- var candidate = kurento.register.complexTypes.IceCandidate(event.candidate);
- ws.send(JSON.stringify({
- id: 'iceCandidate',
- candidate: candidate
- }));
- });
- webRtcEndpoint.processOffer(sdpOffer, function(error, sdpAnswer) {
- if (presenter === null) {
- stop(sessionId);
- console.log(8)
- return callback(noPresenterMessage);
- }
- webRtcEndpoint.gatherCandidates(function(error, result) {
- if (result) console.log(result);
- console.log("Gathering candidates...");
- });
- callback(null, sdpAnswer);
- presenter.pipeline.connect(webRtcEndpoint, webRtcEndpoint, recorder, function(error){
- if (error) {
- stop(sessionId);
- console.log(10)
- return onError(error);
- }
- recorder.record(function(error) {
- if (error) return onError(error);
- });
- console.log( recorder )
- });
- presenter.pipeline.connect(webRtcEndpoint, webRtcEndpoint, player, function(error){
- if (error) {
- stop(sessionId);
- console.log(10)
- return onError(error);
- }
- player.on('EndOfStream', function() {
- console.log('END OF STREAM');
- });
- player.play(function(error) {
- console.log('play or not play')
- if (error) return onError(error);
- });
- });
- });
- });
- });
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement