2017-03-08 51 views
1

我有一個函數需要殺死之前的ffmpeg進程,然後產生一個新的但我不知道如何做到這一點,因爲我會理解ffmpeg沒有定義如果我嘗試下面的代碼:如何殺死node.js中產生的進程

var ffmpeg_started = false; 
function start_ffmpeg(file) { 
    if (ffmpeg_started) 
    ffmpeg.kill(); 
    var command = [ 
       '-i', file, 
       '-f', 'mpegts', 
       '-codec:v', 'mpeg1video', 
       'http://server.com/' 
       ]; 
    } 
    const ffmpeg = spawn('ffmpeg', command); 
    ffmpeg_started = true; 
} 

回答

0

一個簡單/簡單的解決方法就是移動ffmpeg申報到父範圍。然後,您可以取消布爾標誌,只需檢查ffmpeg的值以確定它是否仍在運行。例如:

var ffmpeg; 
function start_ffmpeg(file) { 
    if (ffmpeg) 
    ffmpeg.kill(); 
    ffmpeg = spawn('ffmpeg', ...); 
} 

如果您需要什麼比這更復雜,您可以考慮使用一個隊列或類似的更優雅處理的ffmpeg調用。

+0

ffmpeg需要是一個常量,所以這給了我一個錯誤,因爲我不能給一個常量賦值。 – physiii

+0

爲什麼它需要*是一個常數? – mscdex

+0

它似乎與var而不是const - 我不知道爲什麼所有的例子使用const。但到目前爲止它已經奏效。我也會考慮使用隊列,謝謝。 – physiii