2017-02-07 16 views
0

私はraspividの出力をnodejsでWebアプリケーションにストリームしようとしています。問題は、私がストリーミングしているデータを表示できないことです。これは、ノードサーバのためのコードです:私は多くのことをしようとしたWebアプリケーションのストリームjaspでブラウザに出力ja

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'); 
}); 

、私は、videoタグでだけでなく、画像タグでストリームを表示しようとしたので、私は、次のいずれかを使用しますタグ:

<video id="video" width="400" height="300"></video> 
<img id="img" src=""> 

そして、私は次のことをしようとしたストリームを表示しようとした:

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(); 
}); 

誰かがどのように私は、ブラウザでストリームを表示したり、正しい方向に私を指すことができます教えてもらえますか?事前に感謝

答えて

0

まあ私はこれのための簡単な解決策を見つけることができませんでした。 この問題を解決する方法の1つは、ffmpegまたはMJPEG-streamerを使用して、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/

私は、上記の解決策の一つが役に立つことを願って他の誰か:

関連する問題