如何将节点 .js 服务器上的视频流式传输到浏览器上的视频元素

How to stream a video on a node.js server to a video element on the browser

提问人:Stany Ganyani 提问时间:11/16/2023 更新时间:11/16/2023 访问量:12

问:

l 在 node 中使用流,然后从服务器的字符串在客户端创建一个视频 blob,然后设置视频 src 并加载视频。问题是视频播放器显示一个加载微调器并消失,并且没有显示任何视频。这是一个代码片段,用于将字符串转换为 blob 并将其设置为在 video 元素上播放createReadStream(pathToVideoFile).pipe(res)res.dataURL.createObjectURL(videoFile)res.data

const Video = (props) => {
    if(props.video !== '') {
        // File
        let videoFile = props.loading?new Blob([props.video], { type : "video\/mp4" }):props.video
    
        // Video element
        const videoElement = document.getElementById(`${props.loading?'video-element-loading':'video-element'}`)
    
        // Source element
        const source = document.getElementById(`${props.loading?'video-source-loading':'video-source'}`)
    
        // Create url to the video
        const videoSrc = URL.createObjectURL(videoFile)

        // Set src
        source.setAttribute("src", videoSrc)

        // Load video
        videoElement.load()

        // URL.revokeObjectURL(videoFile)
    }
}
 
export default Video

当 l 检查网络选项卡时,blob 文件的大小为 0MB,但响应标头(尤其是 Content-Length 标头)的有效值大于 0。如何在浏览器上成功流式传输视频

节点 .js blob

评论


答: 暂无答案