用于JavaScript的AWS媒体操作
因此,我使用AWS SDK v2创建一个视频流,通过浏览器发布我的网络摄像头 目标是使用脚本在HTML页面上完成整个过程,这是因为它是Chrome扩展的背景脚本 我已经成功导入了我需要的SDK,我想把我的相机视频推送到服务器上 稍后将通过Lambda机器学习功能在后端处理视频提要用于JavaScript的AWS媒体操作,javascript,amazon-web-services,ecmascript-6,amazon-kinesis,Javascript,Amazon Web Services,Ecmascript 6,Amazon Kinesis,因此,我使用AWS SDK v2创建一个视频流,通过浏览器发布我的网络摄像头 目标是使用脚本在HTML页面上完成整个过程,这是因为它是Chrome扩展的背景脚本 我已经成功导入了我需要的SDK,我想把我的相机视频推送到服务器上 稍后将通过Lambda机器学习功能在后端处理视频提要 const AWS = window.AWS const formValues = getFormValues() const video = document.getElementById('video'
const AWS = window.AWS
const formValues = getFormValues()
const video = document.getElementById('video')
var options = {
accessKeyId: formValues.accessKeyId,
secretAccessKey: formValues.secretAccessKey,
sessionToken: formValues.sessionToken,
region: formValues.region,
endpdpoint: formValues.endpoint,
}
const kinesisVideo = new AWS.KinesisVideo(options)
async function sendFeedToServer() {
let streamName = `stream-${getRandomID()}`
await createVideoStream(streamName)
setTimeout(() => {
getEndpoint(streamName, 'PUT_MEDIA')
}, 1000)
}
async function getEndpoint(streamName, operation) {
var params = {
APIName: operation,
// StreamARN: arn,
StreamName: streamName,
}
console.log(params)
kinesisVideo.getDataEndpoint(params, function (err, data) {
if (err) console.log(err, err.stack)
else console.log(data) // endpoint to read and write data
})
}
async function createVideoStream(streamName) {
const params = {
StreamName: streamName /* required */,
// DataRetentionInHours: 'NUMBER_VALUE',
DeviceName: 'Extension',
KmsKeyId: 'KmsKeyId',
// MediaType: 'STRING_VALUE',
// Tags: {
// '<TagKey>': 'STRING_VALUE',
// /* '<TagKey>': ... */
// },
}
kinesisVideo.createStream(params, function (err, data) {
if (err) console.log(err, err.stack)
// an error occurred
else console.log(data) // successful response
})
}
const AWS=window.AWS
const formValues=getFormValues()
const video=document.getElementById('video'))
变量选项={
accessKeyId:formValues.accessKeyId,
secretAccessKey:formValues.secretAccessKey,
sessionToken:formValues.sessionToken,
region:formValues.region,
endpdpoint:formValues.endpoint,
}
const-kinesisVideo=新AWS.kinesisVideo(选项)
异步函数sendFeedToServer(){
让streamName=`stream-${getRandomID()}`
等待createVideoStream(streamName)
设置超时(()=>{
getEndpoint(streamName,'PUT_MEDIA')
}, 1000)
}
异步函数getEndpoint(streamName,操作){
变量参数={
名称:操作,
//StreamARN:arn,
StreamName:StreamName,
}
console.log(参数)
kinesisVideo.getDataEndpoint(参数,函数(错误,数据){
if(err)console.log(err,err.stack)
else console.log(data)//读取和写入数据的端点
})
}
异步函数createVideoStream(streamName){
常量参数={
StreamName:StreamName/*必需*/,,
//DataRetentionHours:'NUMBER_VALUE',
DeviceName:“扩展名”,
KmsKeyId:'KmsKeyId',
//MediaType:'STRING_VALUE',
//标签:{
//'''STRING_VALUE',
// /* '': ... */
// },
}
创建流(参数,函数(错误,数据){
if(err)console.log(err,err.stack)
//发生了一个错误
else console.log(data)//响应成功
})
}
当摄像机打开并且我们有一个视频流时,sendFeedToServer()
函数被激活
函数的作用是:返回可以写入数据的端点。
如API中所述:
我在文档中找不到使用JavaScript
来putMedia
的方法,但是,我是否遗漏了什么
要在浏览器中实现这一点,是否有任何变通方法?我想这是PutMedia文档的链接,用于上面代码中从getEndpoint获得的端点: 同样的问题