如何解决将实时视频数据从客户端流传输到服务器,并在另一个客户端上显示
我们正在尝试通过连接了树莓派cam2的raspberry pi 3创建实时视频流。到目前为止,我们已经设法将原始m264缓冲区从摄像机通过Axios传输到Express。但是我们不知道如何处理传入的数据以将其显示为实时视频流。
目标是在快递服务器上为另一个客户端创建树莓派cam的实时视频供稿。
欢迎任何帮助!
这就是我们在树莓派上拥有的东西:
const fs = require("fs")
const axios = require("axios")
const { StreamCamera,Codec,SensorMode } = require("pi-camera-connect");
var i = 0
const stream = async () => {
const streamCamera = new StreamCamera({
codec: Codec.H264,SensorMode: SensorMode.Mode7,fps: 30,width: 300,height: 200
});
const videoStream = streamCamera.createStream();
await streamCamera.startCapture();
// We can also listen to data events as they arrive
videoStream.on("data",data => send(data));
};
function send(data) {
console.log(i)
i++;
axios.post("http://192.168.60.100/video",{
stream: data,index: i
})
.then (function(response) {
console.log(response.data)
console.log("sending now")
}).catch(function(error) {
console.log("error")
})
}
stream();
这是我们的服务器:
const fs = require("fs")
var ffmpeg = require('fluent-ffmpeg');
//console clear
process.stdout.write('\033c');
console.log("Server started")
//server
const express = require("express")
const bodyParser = require('body-parser');
const { start } = require("repl");
const app = express()
app.use(bodyParser.urlencoded({ extended: true }));
app.listen(80,() => console.log("Listening"))
app.use(express.json({ limit: "1mb"}))
app.post('/video',(req,res) => {
//res.setHeader('Content-Type','application/json');
console.log("---------")
stream = Buffer.from(req.body.stream)
counter = req.body.index
console.log(counter)
caputure(stream)
res.end("recieved")
})
function caputure(stream) {
console.log(stream)
var writeStream = fs.createWriteStream('./output.h264');
stream.pipe(writeStream)
writeStream.on('error',function (err) {
console.log(err);
});
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)