gpt4 book ai didi

html - 如何使用 axios 向 img html 标签发出视频流 http GET 请求?

转载 作者:太空狗 更新时间:2023-10-29 16:43:59 32 4
gpt4 key购买 nike

我有一个 Django 2.1 后端,它有一个视频流端点和一个 Vue-Cli3 作为我的前端。我后端的视频流端点是一个 GET 请求。要让流媒体在我的客户端工作,我只需要添加:

<img :src="$store.state.domain + 'cameras/video/' + camera.properties.name + '/'" width="240" alt="Camera live Stream">

这工作正常,但现在我必须只为经过身份验证的用户保护我的后端路由。为此,我只需要在请求 header 中添加一个身份验证 token 。问题是,根据 Set custom header for the request made from <img/> tag , img 标签不接受 header 参数。所以现在我正在尝试使用 axios 库构建请求,然后将请求结果流式传输到我的 HTML img 标记。到目前为止我的 Vue 方法代码:

  loadStream(){
const vm = this
let accessToken = vm.$store.getters.getAccessToken
let streamURL = `${vm.$store.state.domain}/cameras/video/${vm.camera.properties.name}/`

axios.get(streamURL, {headers: {"Authorization": `Bearer ${accessToken}`},
responseType: 'stream',
adapter: httpAdapter}


).then( response =>{

console.log(`success:${response.data}`)

let imgTag = document.createElement('img')
imgTag.src = URL.createObjectURL(response)
imgTag.classList.add('video-modal', 'popup-video')
imgTag.alt = `Camera ${camera.properties.name} liveStream`
imgTag.setAttribute("crossorigin", '')
let streamDiv = document.getElementById('livestream-img')
streamDiv.appendChild(imgTag)

}).catch( error => {
console.log(`error:${response.data}`)

let imgTag = document.createElement('img')
imgTag.alt = `Camera ${camera.properties.name} liveStream`
let streamDiv = document.getElementById('livestream-img')
streamDiv.appendChild(imgTag)

})
}

我得到的只是这个警告: Warning: The provided value 'stream' is not a valid enum value of type XMLHttpRequestResponseType.

而且我的请求永无止境。 Promise 永远不会命中 .then() 或 .catch() 因为它正在流式传输。似乎 responseType 无法正常工作。我错过了什么吗?

这是我的 django 后端端点:

class CameraVideoStreamingView(APIView):

def get(self, request, name):

cam = Camera.objects.get(name=name)
return StreamingHttpResponse(cam.serve_web_stream(),
content_type="multipart/x-mixed-replace;boundary=frame")

最佳答案

我建议在视频的查询参数中发送某种身份验证 token ,并为处理此问题,实现自定义 Token Authentication Class它从查询参数而不是 header 获取 token 。然后,您必须使用新的身份验证类更新 View 的 authentication_classes 属性。

关于html - 如何使用 axios 向 img html 标签发出视频流 http GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975955/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com