Sortie de tuyau de ffmpeg à l'aide de nodejs stdout

Je suis de ne pas être en mesure de rediriger la sortie de la ffmpeg sur une sortie standard (stdout).

Sont les suivantes bloc de code que j'ai codé jusqu'à présent.

    var http = require('http')
, fs = require('fs') 
var child_process = require("child_process")
http.createServer(function (req, res) {
console.log("Request:", dump_req(req) , "\n")
//path of the 
var path = 'test-mp4.mp4'  //test-mp4-long.mp4
, stat = fs.statSync(path)
, total = stat.size
var range = req.headers.range
, parts = range.replace(/bytes=/, "").split("-")
, partialstart = parts[0]
, partialend = parts[1]
, start = parseInt(partialstart, 10)
, end = partialend ? parseInt(partialend, 10) : total-1
, chunksize = (end-start)+1
console.log('RANGE: ' + start + ' - ' + end + ' = ' + chunksize +  "\n")
var ffmpeg = child_process.spawn("ffmpeg",[
"-i", path,             //path
"-b:v" , "64k",         //bitrate to 64k
"-bufsize", "64k", 
"-"                     //Output to STDOUT
]);
//set header
res.writeHead(206
, { 'Content-Range': 'bytes ' + start + '-' + end + '/' + total
, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize
, 'Content-Type': 'video/mp4'
})
stdout[ params[1] ] = ffmpeg.stdout
//Pipe the video output to the client response
ffmpeg.stdout.pipe(res);
console.log("Response", dump_res(res), "\n")
}).listen(1337)

Quand j'ai remplacé le ffmpeg fourre de code ci-dessus, tout fonctionne très bien. Voici la partie du code lorsque je remplace le ffmpeg pour animaux.

 var file = fs.createReadStream(path, {start: start, end: end})

Et de la tuyauterie comme:

file.pipe(res)

Ce mal, je suis en cours d'exécution?

Edit:
Le ffmpeg commande fonctionne très bien. J'ai testé ce par le biais de la ligne de commande et de génération de bon de sortie.

  • Si quelqu'un tente d'utiliser ce script, il manque une pièce: res.on("close", () => { ffmpeg.kill(); }); sinon le ffmpeg processus de feuilles en cours d'exécution en arrière-plan lorsque l'on ferme l'onglet ou la fenêtre du navigateur.
InformationsquelleAutor rughimire | 2014-03-04