2014-02-06 52 views
0

服務器的要點是能夠選擇網絡攝像頭並將其與其他一些我已經有效的東西一起進行流式處理。我試圖從node.js服務器中運行一個連續的過程(mjpg-streamer)。 node.js服務器正在處理一個HTML頁面,該頁面具有綁定到javascript函數的選擇下拉菜單,以通過socket.io向服務器發送命令。下拉菜單允許我選擇video0,video1和none。但是,每當我嘗試運行服務器時,它都會拒絕在特定的代碼塊無法訪問或代碼卡住運行無限進程後發出一切。如何在不鎖定服務器的情況下執行此操作?這是導致該問題的代碼:從Node.js運行連續過程

child = exec("video0.sh", function (error, stdout, stderr) { 
sys.print('stdout: ' + stdout); 
sys.print('stderr: ' + stderr); 
if (error !== null) { 
    console.log('exec error: ' + error); 
} 

的bash腳本video0.sh是:

cd mjpg-streamer/mjpg-streamer ; 
export LD_LIBRARY_PATH=. ; 
./mjpg_streamer -o "output_http.so -w ./www -p 8080" -i "input_uvc.so -d /dev/video0"; 
+0

一個無限循環你不想錯過關閉'})'在那裏? – ZenMaster

+0

這可能很明顯,但很多人做過的事情(包括我)。你是否將sh腳本設置爲可執行文件? 'chmod + x video0.sh'? – tsturzl

+0

你能提供任何錯誤嗎? – tsturzl

回答

1

可以設置在純殼直接

#!/usr/bin/bash 

cd mjpg-streamer/mjpg-streamer ; 
export LD_LIBRARY_PATH=. ; 
while : 
do 
    ./mjpg_streamer -o "output_http.so -w ./www -p 8080" -i "input_uvc.so -d /dev/video0"; 
    sleep 5 
done 
0
child = exec("sh video0.sh", function (error, stdout, stderr) { 
    sys.print('stdout: ' + stdout); 
    sys.print('stderr: ' + stderr); 
    if (error !== null) { 
    console.log('exec error: ' + error); 
    }