mirror of
https://shylinux.com/x/volcanos
synced 2025-04-26 01:04:06 +08:00
add media.js
This commit is contained in:
parent
53793ec8cd
commit
49abf4a2c1
@ -1,6 +1,9 @@
|
||||
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||
// if (!can.user.isMobile) { can.page.style(can, can._action, html.HEIGHT, "31", html.DISPLAY, "block") }
|
||||
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(msg, cmds) {}))
|
||||
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(msg, cmds) {
|
||||
console.log("what")
|
||||
|
||||
}))
|
||||
|
||||
var paths = can.core.Split(can.Option(nfs.PATH), ice.FS); can.Option(nfs.PATH, paths[0])
|
||||
var files = can.core.Split(can.Option(nfs.FILE), ice.FS); can.Option(nfs.FILE, files[0])
|
||||
|
49
plugin/story/media.js
Normal file
49
plugin/story/media.js
Normal file
@ -0,0 +1,49 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
}})
|
||||
Volcanos("onaction", {help: "操作数据", list: ["打开屏幕", "打开摄像", "打开录音"],
|
||||
_action: function(can, cb) {
|
||||
var ui = can.page.Append(can, can._output, [{view: html.ACTION}, {view: html.OUTPUT, list: [{type: html.VIDEO, style: {width: can.ConfWidth()}, _init: function(item) {
|
||||
can.core.Timer(10, function() { cb(item, ui) })
|
||||
}}]}])
|
||||
|
||||
can.onappend._action(can, [], ui.action, {
|
||||
"关闭": function(event) {
|
||||
can.core.List(ui.stream.getTracks(), function(track) { track.stop() })
|
||||
can.page.Remove(can, ui.action), can.page.Remove(can, ui.output)
|
||||
},
|
||||
"抓拍": function(event) {
|
||||
var canvas = can.page.Append(can, ui.output, [{type: html.CANVAS}]).first; canvas.getContext("2d").drawImage(ui.video, 0, 0)
|
||||
can.page.Append(can, ui.output, [{img: canvas.toDataURL('image/png'), style: {width: can.ConfWidth()}}])
|
||||
can.page.Remove(can, canvas)
|
||||
},
|
||||
"录制": function(event) { ui.blobs = []
|
||||
ui.mediaRecorder = new MediaRecorder(ui.stream, {mimeType: 'video/webm'})
|
||||
ui.mediaRecorder.ondataavailable = (e) => { ui.blobs.push(e.data), can.misc.Log(ui.blobs.length) }
|
||||
ui.mediaRecorder.start(100)
|
||||
},
|
||||
"回放": function(event) { var blobs = ui.blobs; ui.blobs = []
|
||||
var video = can.page.Append(can, ui.output, [{type: html.VIDEO, style: {width: can.ConfWidth()}}]).video
|
||||
video.src = URL.createObjectURL(new Blob(blobs, {type : 'video/webm'})), video.play()
|
||||
},
|
||||
"下载": function(event) {
|
||||
can.user.download(can, URL.createObjectURL(new Blob(ui.blobs, {type: 'video/webm'})), 'record.webm')
|
||||
},
|
||||
})
|
||||
},
|
||||
"打开屏幕": function(event, can) {
|
||||
can.onaction._action(can, function(item, ui) {
|
||||
navigator.mediaDevices.getDisplayMedia({video: {width: can.ConfWidth()}}).then(function(stream) { ui.stream = stream
|
||||
item.srcObject = stream, item.onloadedmetadata = function(e) { item.play() }
|
||||
}).catch(function(err) { can.misc.Log(err.name + ": " + err.message) })
|
||||
})
|
||||
},
|
||||
"打开摄像": function(event, can) {
|
||||
can.onaction._action(can, function(item, ui) {
|
||||
navigator.mediaDevices.getUserMedia({video: {width: can.ConfWidth()}}).then(function(stream) { ui.stream = stream
|
||||
item.srcObject = stream, item.onloadedmetadata = function(e) { item.play() }
|
||||
}).catch(function(err) { can.misc.Log(err.name + ": " + err.message) })
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Loading…
x
Reference in New Issue
Block a user