module . exports =
/******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function __ webpack_require__ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , __ webpack_require__ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __ webpack_require__ . m = modules ;
/******/
/******/ // expose the module cache
/******/ __ webpack_require__ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ __ webpack_require__ . d = function ( exports , name , getter ) {
/******/ if ( ! __ webpack_require__ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , { enumerable : true , get : getter } ) ;
/******/ }
/******/ } ;
/******/
/******/ // define __esModule on exports
/******/ __ webpack_require__ . r = function ( exports ) {
/******/ if ( typeof Symbol !== 'undefined' && Symbol . toStringTag ) {
/******/ Object . defineProperty ( exports , Symbol . toStringTag , { value : 'Module' } ) ;
/******/ }
/******/ Object . defineProperty ( exports , '__esModule' , { value : true } ) ;
/******/ } ;
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __ webpack_require__ . t = function ( value , mode ) {
/******/ if ( mode & 1 ) value = __ webpack_require__ ( value ) ;
/******/ if ( mode & 8 ) return value ;
/******/ if ( ( mode & 4 ) && typeof value === 'object' && value && value . __ esModule ) return value ;
/******/ var ns = Object . create ( null ) ;
/******/ __ webpack_require__ . r ( ns ) ;
/******/ Object . defineProperty ( ns , 'default' , { enumerable : true , value : value } ) ;
/******/ if ( mode & 2 && typeof value != 'string' ) for ( var key in value ) __ webpack_require__ . d ( ns , key , function ( key ) { return value [ key ] ; } . bind ( null , key ) ) ;
/******/ return ns ;
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __ webpack_require__ . n = function ( module ) {
/******/ var getter = module && module . __ esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ __ webpack_require__ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __ webpack_require__ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ __ webpack_require__ . p = "" ;
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __ webpack_require__ ( __ webpack_require__ . s = "fb15" ) ;
/******/ } )
/************************************************************************/
/******/ ( {
/***/ "11a1" :
/***/ ( function ( module , __ webpack_exports__ , __ webpack_require__ ) {
"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_09aaef78_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __ webpack_require__ ( "30b5" ) ;
/* 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_09aaef78_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_09aaef78_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ ) ;
/* 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_09aaef78_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default . a ) ;
/***/ } ) ,
/***/ "30b5" :
/***/ ( function ( module , exports , __ webpack_require__ ) {
// extracted by mini-css-extract-plugin
/***/ } ) ,
/***/ "8875" :
/***/ ( function ( module , exports , __ webpack_require__ ) {
var __ WEBPACK_AMD_DEFINE_FACTORY__ , __ WEBPACK_AMD_DEFINE_ARRAY__ , __ WEBPACK_AMD_DEFINE_RESULT__ ; // addapted from the document.currentScript polyfill by Adam Miller
// MIT license
// source: https://github.com/amiller-gh/currentScript-polyfill
// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505
( function ( root , factory ) {
if ( true ) {
! ( __ WEBPACK_AMD_DEFINE_ARRAY__ = [ ] , __ WEBPACK_AMD_DEFINE_FACTORY__ = ( factory ) ,
__ WEBPACK_AMD_DEFINE_RESULT__ = ( typeof __ WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
( __ WEBPACK_AMD_DEFINE_FACTORY__ . apply ( exports , __ WEBPACK_AMD_DEFINE_ARRAY__ ) ) : __ WEBPACK_AMD_DEFINE_FACTORY__ ) ,
__ WEBPACK_AMD_DEFINE_RESULT__ !== undefined && ( module . exports = __ WEBPACK_AMD_DEFINE_RESULT__ ) ) ;
} else { }
} ( typeof self !== 'undefined' ? self : this , function ( ) {
function getCurrentScript ( ) {
if ( document . currentScript ) {
return document . currentScript
}
// IE 8-10 support script readyState
// IE 11+ & Firefox support stack trace
try {
throw new Error ( ) ;
}
catch ( err ) {
// Find the second match for the "at" string to get file src url from stack.
var ieStackRegExp = /.*at [^(]*\((.*):(.+):(.+)\)$/ig ,
ffStackRegExp = /@([^@]*):(\d+):(\d+)\s*$/ig ,
stackDetails = ieStackRegExp . exec ( err . stack ) || ffStackRegExp . exec ( err . stack ) ,
scriptLocation = ( stackDetails && stackDetails [ 1 ] ) || false ,
line = ( stackDetails && stackDetails [ 2 ] ) || false ,
currentLocation = document . location . href . replace ( document . location . hash , '' ) ,
pageSource ,
inlineScriptSourceRegExp ,
inlineScriptSource ,
scripts = document . getElementsByTagName ( 'script' ) ; // Live NodeList collection
if ( scriptLocation === currentLocation ) {
pageSource = document . documentElement . outerHTML ;
inlineScriptSourceRegExp = new RegExp ( '(?:[^\\n]+?\\n){0,' + ( line - 2 ) + '}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*' , 'i' ) ;
inlineScriptSource = pageSource . replace ( inlineScriptSourceRegExp , '$1' ) . trim ( ) ;
}
for ( var i = 0 ; i < scripts . length ; i ++ ) {
// If ready state is interactive, return the script tag
if ( scripts [ i ] . readyState === 'interactive' ) {
return scripts [ i ] ;
}
// If src matches, return the script tag
if ( scripts [ i ] . src === scriptLocation ) {
return scripts [ i ] ;
}
// If inline source matches, return the script tag
if (
scriptLocation === currentLocation &&
scripts [ i ] . innerHTML &&
scripts [ i ] . innerHTML . trim ( ) === inlineScriptSource
) {
return scripts [ i ] ;
}
}
// If no match, return null
return null ;
}
} ;
return getCurrentScript
} ) ) ;
/***/ } ) ,
/***/ "fb15" :
/***/ ( function ( module , __ webpack_exports__ , __ webpack_require__ ) {
"use strict" ;
// ESM COMPAT FLAG
__ webpack_require__ . r ( __ webpack_exports__ ) ;
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
if ( typeof window !== 'undefined' ) {
var currentScript = window . document . currentScript
if ( true ) {
var getCurrentScript = __ webpack_require__ ( "8875" )
currentScript = getCurrentScript ( )
// for backward compatibility, because previously we directly included the polyfill
if ( ! ( 'currentScript' in document ) ) {
Object . defineProperty ( document , 'currentScript' , { get : getCurrentScript } )
}
}
var src = currentScript && currentScript . src . match ( /(.+\/)[^/]+\.js(\?.*)?$/ )
if ( src ) {
__ webpack_require__ . p = src [ 1 ] // eslint-disable-line
}
}
// Indicate to webpack that this file can be concatenated
/* 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=09aaef78&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 . _ 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 = [ ]
// CONCATENATED MODULE: ./src/App.vue?vue&type=template&id=09aaef78&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&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
const config = {
iceServers : [
// {
// urls:[
// "stun:stun.ekiga.net",
// "stun:stun.ideasip.com",
// "stun:stun.schlund.de",
// "stun:stun.stunprotocol.org:3478",
// "stun:stun.voiparound.com",
// "stun:stun.voipbuster.com",
// "stun:stun.voipstunt.com",
// "stun:stun.voxgratia.org",
// "stun:stun.services.mozilla.com",
// "stun:stun.xten.com",
// "stun:stun.softjoys.com",
// "stun:stunserver.org",
// "stun:stun.schlund.de",
// "stun:stun.rixtelecom.se",
// "stun:stun.iptel.org",
// "stun:stun.ideasip.com",
// "stun:stun.fwdnet.net",
// "stun:stun.ekiga.net",
// "stun:stun01.sipphone.com",
// ]
// }
]
} ;
let pc = new RTCPeerConnection ( config ) ;
var stream = null ;
var streamPath = "live/rtc" ;
/* harmony default export */ var Appvue_type_script_lang_js_ = ( {
data ( ) {
return {
localSDP : pc && pc . localDescription && pc . localDescription . sdp ,
remoteSDP : pc && pc . remoteDescription && pc . remoteDescription . sdp ,
streamPath ,
iceConnectionState : pc && pc . iceConnectionState ,
stream ,
type : "" ,
ask : false
} ;
} ,
methods : {
async startSession ( type ) {
this . type = type ;
this . ask = true ;
if ( type == "play" ) {
const result = await this . ajax ( {
url : "/webrtc/preparePlay?streamPath=" + this . streamPath ,
dataType : "json"
} ) ;
if ( result . errmsg ) {
this . $toast . error ( result . errmsg ) ;
return ;
} else {
streamPath = this . streamPath ;
this . remoteSDP = result . sdp ;
}
pc . ontrack = event => {
console . log ( event )
if ( event . streams [ 0 ] . id == "monibuca" )
this . stream = stream = event . streams [ 0 ] ;
} ;
await pc . setRemoteDescription (
new RTCSessionDescription ( result )
) ;
await pc . setLocalDescription ( await pc . createAnswer ( ) ) ;
this . localSDP = pc . localDescription . sdp ;
} else {
pc . addStream ( stream ) ;
await pc . setLocalDescription ( await pc . createOffer ( ) ) ;
this . localSDP = pc . localDescription . sdp ;
}
const result = await this . ajax ( {
type : "POST" ,
processData : false ,
data : JSON . stringify ( pc . localDescription ) ,
url : "/webrtc/" + type + "?streamPath=" + this . streamPath ,
dataType : "json"
} ) ;
this . ask = false ;
if ( result != "success" ) {
this . $toast . error ( result . errmsg || result ) ;
return ;
} else {
streamPath = this . streamPath ;
}
if ( type == "play" ) {
} else {
this . remoteSDP = result . sdp ;
pc . setRemoteDescription ( new RTCSessionDescription ( result ) ) ;
}
} ,
stopSession ( ) {
pc . close ( ) ;
pc = new RTCPeerConnection ( config ) ;
this . remoteSDP = "" ;
this . localSDP = "" ;
this . type = "" ;
// this.connectICE().catch(err => this.$toast.error(err.message));
}
} ,
async mounted ( ) {
pc . onsignalingstatechange = e => {
console . log ( e ) ;
} ;
pc . oniceconnectionstatechange = e => {
this . $toast . info ( pc . iceConnectionState ) ;
this . iceConnectionState = pc . iceConnectionState ;
} ;
pc . onicecandidate = event => { } ;
this . $parent . titleTabs = [ "摄像头" , "localSDP" , "remoteSDP" ] ;
try {
if ( ! this . stream )
this . stream = stream = await navigator . mediaDevices . getUserMedia (
{ video : true , audio : true }
) ;
} catch ( err ) {
this . $toast . error ( err . message ) ;
}
}
} ) ;
// 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_ ) ;
// EXTERNAL MODULE: ./src/App.vue?vue&type=style&index=0&id=09aaef78&scoped=true&lang=css&
var Appvue_type_style_index_0_id_09aaef78_scoped_true_lang_css_ = __ webpack_require__ ( "11a1" ) ;
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports ,
render ,
staticRenderFns ,
functionalTemplate ,
injectStyles ,
scopeId ,
moduleIdentifier , /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports . options
: scriptExports
// render functions
if ( render ) {
options . render = render
options . staticRenderFns = staticRenderFns
options . _ compiled = true
}
// functional template
if ( functionalTemplate ) {
options . functional = true
}
// scopedId
if ( scopeId ) {
options . _ scopeId = 'data-v-' + scopeId
}
var hook
if ( moduleIdentifier ) { // server build
hook = function ( context ) {
// 2.3 injection
context =
context || // cached call
( this . $vnode && this . $vnode . ssrContext ) || // stateful
( this . parent && this . parent . $vnode && this . parent . $vnode . ssrContext ) // functional
// 2.2 with runInNewContext: true
if ( ! context && typeof __ VUE_SSR_CONTEXT__ !== 'undefined' ) {
context = __ VUE_SSR_CONTEXT__
}
// inject component styles
if ( injectStyles ) {
injectStyles . call ( this , context )
}
// register component module identifier for async chunk inferrence
if ( context && context . _ registeredComponents ) {
context . _ registeredComponents . add ( moduleIdentifier )
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options . _ ssrRegister = hook
} else if ( injectStyles ) {
hook = shadowMode
? function ( ) {
injectStyles . call (
this ,
( options . functional ? this . parent : this ) . $root . $options . shadowRoot
)
}
: injectStyles
}
if ( hook ) {
if ( options . functional ) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options . _ injectStyles = hook
// register for functional component in vue file
var originalRender = options . render
options . render = function renderWithStyleInjection ( h , context ) {
hook . call ( context )
return originalRender ( h , context )
}
} else {
// inject component registration as beforeCreate hook
var existing = options . beforeCreate
options . beforeCreate = existing
? [ ] . concat ( existing , hook )
: [ hook ]
}
}
return {
exports : scriptExports ,
options : options
}
}
// CONCATENATED MODULE: ./src/App.vue
/* normalize component */
var component = normalizeComponent (
src_Appvue_type_script_lang_js_ ,
render ,
staticRenderFns ,
false ,
null ,
"09aaef78" ,
null
)
/* harmony default export */ var App = ( component . exports ) ;
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
/* harmony default export */ var entry_lib = __ webpack_exports__ [ "default" ] = ( App ) ;
/***/ } )
/******/ } ) [ "default" ] ;
//# sourceMappingURL=plugin-webrtc.common.js.map