用于JavaScript的AWS媒体操作

用于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'

因此,我使用AWS SDK v2创建一个视频流,通过浏览器发布我的网络摄像头

目标是使用脚本在HTML页面上完成整个过程,这是因为它是Chrome扩展的背景脚本

我已经成功导入了我需要的SDK,我想把我的相机视频推送到服务器上

稍后将通过Lambda机器学习功能在后端处理视频提要

  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获得的端点:

同样的问题