我尝试使用模块node-fluent-ffmpeg(https://github.com/schaermu/node-fluent-ffmpeg)来转码和流式传输视频文件。由于我在Windows机器上,我首先从官方网站(http://ffmpeg.zeranoe.com/builds/)下载了FFMpeg。然后我解压缩了文件夹C:/ FFmpeg中的文件,并添加了系统路径的路径(准确地说是bin文件夹)。我通过在命令提示符下输入来检查FFmpeg是否有效:ffmpeg -version。它给出了成功的回应。
之后我继续复制/更改了模块中的以下代码(https://github.com/schaermu/node-fluent-ffmpeg/blob/master/examples/express-stream.js):
app.get('/video/:filename', function(req, res) {
res.contentType('avi');
console.log('Setting up stream')
var stream = 'c:/temp/' + req.params.filename
var proc = new ffmpeg({ source: configfileResults.moviepath + req.params.filename, nolog: true, timeout: 120, })
.usingPreset('divx')
.withAspect('4:3')
.withSize('640x480')
.writeToStream(res, function(retcode, error){
if (!error){
console.log('file has been converted succesfully',retcode);
}else{
console.log('file conversion error',error);
}
});
});
我已经使用流动播放器正确设置了客户端并试图让它运行但是 什么都没发生。我检查了控制台,它说:
file conversion error timeout
之后我增加了超时但不知何故,它只在我重新加载页面时才开始。但当然会因页面重新加载而立即停止。我是否只需要为文件转码创建一个单独的节点服务器?或者是否需要触发某种事件?
我可能错过了一些简单的东西,但我似乎无法让它发挥作用。 希望有人可以指出我错过的东西。
由于
答案 0 :(得分:1)
我已经使用videoJs而不是Flowplayer修复了它。在我的情况下,启动flowplayer的方式无法正常工作。所以我初始化流然后初始化videojs以显示流。哪个效果很好。