Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法将h.264视频流转换为客户端Javascript可读的内容?_Javascript_Node.js_H.264 - Fatal编程技术网

有没有办法将h.264视频流转换为客户端Javascript可读的内容?

有没有办法将h.264视频流转换为客户端Javascript可读的内容?,javascript,node.js,h.264,Javascript,Node.js,H.264,我有一个h.264视频流,通过WebSocket从服务器(node.js)传递到客户端(html,vanilla js)。我在浏览器中记录了原始h.264控制台。我想将该视频流发送到html标记,并让它在那里实时显示视频 服务器端: var wssV=新服务器({port:3001}); wssV.on(“连接”,函数(ws){ var videoPORT=11111;//Tello端口用于视频 var videoServer=dgram.createSocket('udp4'); videoS

我有一个h.264视频流,通过WebSocket从服务器(node.js)传递到客户端(html,vanilla js)。我在浏览器中记录了原始h.264控制台。我想将该视频流发送到html
标记,并让它在那里实时显示视频

服务器端:

var wssV=新服务器({port:3001});
wssV.on(“连接”,函数(ws){
var videoPORT=11111;//Tello端口用于视频
var videoServer=dgram.createSocket('udp4');
videoServer.on('侦听',函数(){
var address=videoServer.address();
});
videoServer.on('message',函数(message,remote){
ws.send(message);//发送到前端的原始h.264视频流
});
videoServer.bind(videoPORT);
});
客户端:

$(文档).ready(函数(){
var videoWebSocket=newwebsocket(“ws://localhost:3001”);
videoWebSocket.onerror=函数(evt){console.log(“错误:+evt.data);};
videoWebSocket.onopen=函数(evt){console.log(“视频连接打开…”);};
videoWebSocket.onmessage=函数(evt){
console.log(evt.data);//原始h.264编码视频流
//如何将此evt.data发送到我的html视频标签
};
videoWebSocket.onclose=函数(evt){console.log(“视频连接已关闭”);};
}); 
html:


问题:

  • 如何将传入的视频流附加到
    标记
  • src
    codec
    属性值应设置为什么
  • 我可以通过设置
    codec
    属性直接流式传输h.264吗

  • 如果我完全错误地处理了这个问题,请帮助我找到在浏览器中显示h.264视频流的方法。

    为什么要使用Web套接字?为什么不将视频多路复用到MP4容器服务器端,并将其作为HTTP流传输?然后你就可以做
    。除非您正在进行双向通信,否则不需要web套接字。我不需要双向通信。您能否在您的说明中列举一些关于如何将多路复用和流式传输作为HTTP的信息。对于您的服务器,在您想要的任何路径的HTTP请求下,执行FFmpeg的子进程以生成MP4(不要忘记
    -movflags faststart
    ),将FFmpeg输出文件设置为
    -
    ,然后从FFmpeg获取标准输出流,并将其作为HTTP响应传输到浏览器。我花了一些时间,不知道如何将原始h.264流多路复用到MP4容器中。此时,您应该发布一个新问题,因为您的新问题(将子进程输出传输到HTTP客户端)与原始问题没有太多关系。