首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nodejs向浏览器的流raspivid输出

使用nodejs向浏览器的流raspivid输出
EN

Stack Overflow用户
提问于 2017-02-07 01:53:37
回答 1查看 2.6K关注 0票数 0

我试图用nodejs将raspivid的输出流到web应用程序中。问题是,无法显示我正在传输的数据。这是节点服务器的代码:

代码语言:javascript
复制
const bodyParser = require('body-parser');
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
const spawn = require('child_process').spawn;

app.use(express.static('public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

const raspivid = spawn(
  'raspivid',
  ['-t', '0', '-w', '300', '-h', '300', '-hf', '-fps', '20', '-o', '-']);

raspivid.stdout.on('data', (data) => {
  var base64Image = data.toString('base64');
  io.emit('videostream', base64Image);
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

对于web应用程序,我尝试了很多事情,我尝试在图像标记和视频标记中显示流,所以我使用了以下标记之一:

代码语言:javascript
复制
<video id="video" width="400" height="300"></video>
<img id="img" src="">

我试着显示流,试着做以下事情:

代码语言:javascript
复制
var socket = io(),
  video = document.getElementById('video'),
  img = document.getElementById('img'),
  vendorUrl = window.URL || window.webkitURL;

socket.on('videostream', function(stream) {
  var contentType = 'image/png';
  img.src = ' data:image/png;base64,' + stream;//op1 doesn't work
  var blob = b64toBlob(stream, contentType);
  img.src = vendorUrl.createObjectURL(blob);//op2 doesn't work
  video.src = vendorUrl.createObjectURL(blob);//op3 doesn't work
  video.play();
});

有人能告诉我如何在浏览器中显示流或指出正确的方向吗?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 01:00:48

我没能找到简单的解决办法。解决这一问题的一种方法是使用ffmpeg或MJPEG- stream将raspivid的输入作为可以在浏览器中显示的视频流进行流处理,如何这样做的详细信息可以在以下文章中找到:https://raspberrypi.stackexchange.com/questions/7446/how-can-i-stream-h-264-video-from-the-raspberry-pi-camera-module-via-a-web-serve

https://blog.miguelgrinberg.com/post/stream-video-from-the-raspberry-pi-camera-to-web-browsers-even-on-ios-and-android

或者,您可以在短时间内拍摄照片,然后将它们发送到流中,如在这里更好地描述:http://thejackalofjavascript.com/rpi-live-streaming/

我希望上述解决方案之一对其他人有用:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42080380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档