|
@ -165,21 +165,21 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ |
|
|
|
|
|
|
|
|
/***/ }), |
|
|
/***/ }), |
|
|
|
|
|
|
|
|
/***/ "8dc9": |
|
|
/***/ "8e55": |
|
|
/***/ (function(module, exports, __webpack_require__) { |
|
|
/***/ (function(module, exports, __webpack_require__) { |
|
|
|
|
|
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
|
|
|
/***/ }), |
|
|
/***/ }), |
|
|
|
|
|
|
|
|
/***/ "c857": |
|
|
/***/ "e91a": |
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) { |
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) { |
|
|
|
|
|
|
|
|
"use strict"; |
|
|
"use strict"; |
|
|
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_3d66f6b2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8dc9"); |
|
|
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_03ea1df8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8e55"); |
|
|
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_3d66f6b2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_3d66f6b2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__); |
|
|
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_03ea1df8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_03ea1df8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__); |
|
|
/* unused harmony reexport * */ |
|
|
/* unused harmony reexport * */ |
|
|
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_3d66f6b2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); |
|
|
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_id_03ea1df8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); |
|
|
|
|
|
|
|
|
/***/ }), |
|
|
/***/ }), |
|
|
|
|
|
|
|
@ -214,12 +214,12 @@ if (typeof window !== 'undefined') { |
|
|
// Indicate to webpack that this file can be concatenated
|
|
|
// Indicate to webpack that this file can be concatenated
|
|
|
/* harmony default export */ var setPublicPath = (null); |
|
|
/* harmony default export */ var setPublicPath = (null); |
|
|
|
|
|
|
|
|
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d106341-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/App.vue?vue&type=template&id=3d66f6b2&scoped=true&
|
|
|
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d106341-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/App.vue?vue&type=template&id=03ea1df8&scoped=true&
|
|
|
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.$parent.titleTabActive == 1)?_c('pre',[_vm._v(_vm._s(_vm.localSDP))]):(_vm.$parent.titleTabActive == 2)?_c('pre',[_vm._v(_vm._s(_vm.remoteSDP))]):_c('div',[_c('mu-text-field',{attrs:{"label":"streamPath"},model:{value:(_vm.streamPath),callback:function ($$v) {_vm.streamPath=$$v},expression:"streamPath"}}),(!_vm.localSDP || _vm.ask)?_c('span',{staticClass:"blink"},[_vm._v("Connecting")]):(_vm.iceConnectionState!='connected')?[_c('m-button',{on:{"click":function($event){return _vm.startSession('publish')}}},[_vm._v("Publish")]),_c('m-button',{on:{"click":function($event){return _vm.startSession('play')}}},[_vm._v("Play")])]:(_vm.iceConnectionState=='connected')?_c('m-button',{on:{"click":_vm.stopSession}},[_vm._v("Stop")]):_vm._e(),_c('br'),_c('video',{ref:"video1",attrs:{"width":"640","height":"480","autoplay":"","muted":""},domProps:{"srcObject":_vm.stream,"muted":true}})],2)])} |
|
|
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.$parent.titleTabActive == 1)?_c('pre',[_vm._v(_vm._s(_vm.localSDP))]):(_vm.$parent.titleTabActive == 2)?_c('pre',[_vm._v(_vm._s(_vm.remoteSDP))]):_c('div',[_c('mu-text-field',{attrs:{"label":"streamPath"},model:{value:(_vm.streamPath),callback:function ($$v) {_vm.streamPath=$$v},expression:"streamPath"}}),(!_vm.localSDP || _vm.ask)?_c('span',{staticClass:"blink"},[_vm._v("Connecting")]):_vm._e(),[_c('m-button',{on:{"click":function($event){return _vm.startSession('publish')}}},[_vm._v("Publish")]),_c('m-button',{on:{"click":function($event){return _vm.startSession('play')}}},[_vm._v("Play")])],_c('m-button',{on:{"click":_vm.stopSession}},[_vm._v("Stop")]),_c('br'),_c('video',{ref:"video1",attrs:{"width":"640","height":"480","autoplay":"","muted":""},domProps:{"srcObject":_vm.stream,"muted":true}})],2)])} |
|
|
var staticRenderFns = [] |
|
|
var staticRenderFns = [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CONCATENATED MODULE: ./src/App.vue?vue&type=template&id=3d66f6b2&scoped=true&
|
|
|
// CONCATENATED MODULE: ./src/App.vue?vue&type=template&id=03ea1df8&scoped=true&
|
|
|
|
|
|
|
|
|
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/App.vue?vue&type=script&lang=js&
|
|
|
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/App.vue?vue&type=script&lang=js&
|
|
|
//
|
|
|
//
|
|
@ -267,10 +267,10 @@ const config = { |
|
|
// ]
|
|
|
// ]
|
|
|
// }
|
|
|
// }
|
|
|
] |
|
|
] |
|
|
} |
|
|
}; |
|
|
let pc = new RTCPeerConnection(config); |
|
|
let pc = new RTCPeerConnection(config); |
|
|
var stream = null |
|
|
var stream = null; |
|
|
var streamPath = "live/rtc" |
|
|
var streamPath = "live/rtc"; |
|
|
/* harmony default export */ var Appvue_type_script_lang_js_ = ({ |
|
|
/* harmony default export */ var Appvue_type_script_lang_js_ = ({ |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
@ -284,61 +284,72 @@ var streamPath = "live/rtc" |
|
|
}; |
|
|
}; |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
startSession(type) { |
|
|
async startSession(type) { |
|
|
this.type = type |
|
|
this.type = type; |
|
|
this.ask = true |
|
|
this.ask = true; |
|
|
this.ajax({type: 'POST',processData:false,data: JSON.stringify(pc.localDescription),url:"/webrtc/"+type+"?streamPath="+this.streamPath,dataType:"json"}).then(result => { |
|
|
const result = await this.ajax({ |
|
|
this.ask = false |
|
|
type: "POST", |
|
|
|
|
|
processData: false, |
|
|
|
|
|
data: JSON.stringify(pc.localDescription), |
|
|
|
|
|
url: "/webrtc/" + type + "?streamPath=" + this.streamPath, |
|
|
|
|
|
dataType: "json" |
|
|
|
|
|
}); |
|
|
|
|
|
this.ask = false; |
|
|
if (result.errmsg) { |
|
|
if (result.errmsg) { |
|
|
this.$toast.error(result.errmsg) |
|
|
this.$toast.error(result.errmsg); |
|
|
} else { |
|
|
} else { |
|
|
streamPath = this.streamPath |
|
|
streamPath = this.streamPath; |
|
|
this.remoteSDP = result.sdp; |
|
|
this.remoteSDP = result.sdp; |
|
|
this.$parent.titleTabs = ["摄像头", "localSDP", "remoteSDP"]; |
|
|
this.$parent.titleTabs = ["摄像头", "localSDP", "remoteSDP"]; |
|
|
pc.setRemoteDescription(new RTCSessionDescription(result)); |
|
|
pc.setRemoteDescription(new RTCSessionDescription(result)); |
|
|
} |
|
|
} |
|
|
}); |
|
|
if (type == "publish") { |
|
|
|
|
|
pc.addStream(stream); |
|
|
|
|
|
this.localSDP = ( |
|
|
|
|
|
await pc.setLocalDescription(await pc.createOffer()) |
|
|
|
|
|
).sdp; |
|
|
|
|
|
} else { |
|
|
|
|
|
pc.ontrack = event => { |
|
|
|
|
|
if(event.streams[0].id=="monibuca") |
|
|
|
|
|
this.stream = stream = event.streams[0]; |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
stopSession() { |
|
|
stopSession() { |
|
|
pc.close() |
|
|
pc.close(); |
|
|
pc = new RTCPeerConnection(config) |
|
|
pc = new RTCPeerConnection(config); |
|
|
this.remoteSDP = "" |
|
|
this.remoteSDP = ""; |
|
|
this.localSDP = "" |
|
|
this.localSDP = ""; |
|
|
this.connectICE().catch(err=> this.$toast.error(err.message)) |
|
|
this.type = ""; |
|
|
|
|
|
// this.connectICE().catch(err => this.$toast.error(err.message));
|
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
async connectICE(){ |
|
|
async mounted() { |
|
|
pc.addStream(stream); |
|
|
pc.onsignalingstatechange = e => { |
|
|
await pc.setLocalDescription(await pc.createOffer()) |
|
|
console.log(e); |
|
|
|
|
|
}; |
|
|
pc.oniceconnectionstatechange = e => { |
|
|
pc.oniceconnectionstatechange = e => { |
|
|
this.$toast.info(pc.iceConnectionState) |
|
|
this.$toast.info(pc.iceConnectionState); |
|
|
this.iceConnectionState = pc.iceConnectionState |
|
|
this.iceConnectionState = pc.iceConnectionState; |
|
|
}; |
|
|
}; |
|
|
pc.onicecandidate = event => { |
|
|
pc.onicecandidate = event => { |
|
|
if (event.candidate === null) { |
|
|
if (event.candidate === null) { |
|
|
this.localSDP = pc.localDescription.sdp; |
|
|
|
|
|
this.$parent.titleTabs = ["摄像头", "localSDP"]; |
|
|
this.$parent.titleTabs = ["摄像头", "localSDP"]; |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
pc.ontrack = event=>{ |
|
|
|
|
|
if(this.type=="play" && event.streams[0]){ |
|
|
|
|
|
this.stream = stream = event.streams[0] |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
async mounted() { |
|
|
|
|
|
if (this.localSDP) { |
|
|
if (this.localSDP) { |
|
|
let tabs = ["摄像头"] |
|
|
let tabs = ["摄像头"]; |
|
|
if(this.localSDP)tabs.push("localSDP") |
|
|
if (this.localSDP) tabs.push("localSDP"); |
|
|
if(this.remoteSDP)tabs.push("remoteSDP") |
|
|
if (this.remoteSDP) tabs.push("remoteSDP"); |
|
|
this.$parent.titleTabs = tabs; |
|
|
this.$parent.titleTabs = tabs; |
|
|
} else { |
|
|
} else { |
|
|
try { |
|
|
try { |
|
|
if (!this.stream) |
|
|
if (!this.stream) |
|
|
this.stream = stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }) |
|
|
this.stream = stream = await navigator.mediaDevices.getUserMedia( |
|
|
await this.connectICE() |
|
|
{ video: true, audio: true } |
|
|
|
|
|
); |
|
|
} catch (err) { |
|
|
} catch (err) { |
|
|
this.$toast.error(err.message) |
|
|
this.$toast.error(err.message); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -346,8 +357,8 @@ var streamPath = "live/rtc" |
|
|
|
|
|
|
|
|
// CONCATENATED MODULE: ./src/App.vue?vue&type=script&lang=js&
|
|
|
// CONCATENATED MODULE: ./src/App.vue?vue&type=script&lang=js&
|
|
|
/* harmony default export */ var src_Appvue_type_script_lang_js_ = (Appvue_type_script_lang_js_); |
|
|
/* harmony default export */ var src_Appvue_type_script_lang_js_ = (Appvue_type_script_lang_js_); |
|
|
// EXTERNAL MODULE: ./src/App.vue?vue&type=style&index=0&id=3d66f6b2&scoped=true&lang=css&
|
|
|
// EXTERNAL MODULE: ./src/App.vue?vue&type=style&index=0&id=03ea1df8&scoped=true&lang=css&
|
|
|
var Appvue_type_style_index_0_id_3d66f6b2_scoped_true_lang_css_ = __webpack_require__("c857"); |
|
|
var Appvue_type_style_index_0_id_03ea1df8_scoped_true_lang_css_ = __webpack_require__("e91a"); |
|
|
|
|
|
|
|
|
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
|
|
|
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
|
|
|
/* globals __VUE_SSR_CONTEXT__ */ |
|
|
/* globals __VUE_SSR_CONTEXT__ */ |
|
@ -464,7 +475,7 @@ var component = normalizeComponent( |
|
|
staticRenderFns, |
|
|
staticRenderFns, |
|
|
false, |
|
|
false, |
|
|
null, |
|
|
null, |
|
|
"3d66f6b2", |
|
|
"03ea1df8", |
|
|
null |
|
|
null |
|
|
|
|
|
|
|
|
) |
|
|
) |
|
|