nadesiko3
Version:
Japanese Programming Language
109 lines (107 loc) • 3.39 kB
text/typescript
// @ts-nocheck
import { NakoSystem } from '../core/src/plugin_api.mjs'
export default {
// @カメラ
'カメラオプション': { type: 'const', value: { video: true, audio: false } }, // @かめらおぷしょん
'カメラ起動': { // @カメラを起動する // @かめらきどう
type: 'func',
josi: [['の', 'に', 'へ', 'で']],
pure: true,
asyncFn: true,
fn: async function(v: any, sys: NakoSystem) {
const options = sys.__getSysVar('カメラオプション')
const stream = await navigator.mediaDevices.getUserMedia(options)
v.srcObject = stream
const settings = sys.__exec('カメラ設定取得', [v, sys])
if (settings.width && settings.height) {
v.width = settings.width
v.height = settings.height
}
v.onloadedmetadata = function() {
v.play()
}
sys.tags.usingCamera = true
sys.tags.video = v
},
return_none: true
},
'カメラ終了': { // @カメラを終了 // @かめらしゅうりょう
type: 'func',
josi: [['の']],
pure: true,
fn: function(v: any, sys: NakoSystem) {
if (v) {
sys.__exec('メディアストリーム停止', [v, sys])
v.srcObject = null
}
sys.tags.usingCamera = false
sys.tags.video = null
},
return_none: true
},
'カメラ映像再生': { // @カメラ映像を再生する // @かめらえいぞうさいせい
type: 'func',
josi: [['の']],
pure: true,
fn: function(v: any, sys: NakoSystem) {
if (v && v.play) {
v.play()
}
},
return_none: true
},
'カメラ映像一時停止': { // @カメラ映像の再生を一時停止する // @かめらえいぞういちじていし
type: 'func',
josi: [['の']],
pure: true,
fn: function(v: any, sys: NakoSystem) {
if (v && v.pause) {
v.pause()
}
},
return_none: true
},
'カメラ設定取得': { // @カメラ設定を取得して返す // @かめらせっていしゅとく
type: 'func',
josi: [['の']],
pure: true,
fn: function(v: any, sys: NakoSystem) {
if (v && v.srcObject && v.srcObject.getVideoTracks) {
const tracks = v.srcObject.getVideoTracks()
if (tracks.length > 0) {
const settings = tracks[0].getSettings()
return settings
}
return {}
}
return {}
},
return_none: false
},
'メディアストリーム取得': { // @メディアストリームを取得して返す(カメラオプションを参照) // @めでぃあすとりーむしゅとく
type: 'func',
josi: [],
pure: true,
asyncFn: true,
fn: async function(sys: NakoSystem) {
const options = sys.__getSysVar('カメラオプション')
const stream = await navigator.mediaDevices.getUserMedia(options)
return stream
},
return_none: false
},
'メディアストリーム停止': { // @メディアストリームを停止する // @めでぃあすとりーむていし
type: 'func',
josi: [['の']],
pure: true,
fn: function(v:any, sys: NakoSystem) {
if (v && v.srcObject && v.srcObject.getVideoTracks) {
const tracks = v.srcObject.getVideoTracks()
for (const track of tracks) {
track.stop()
}
}
},
return_none: false
}
}