gpt4 book ai didi

node.js - ffmpeg jpeg 流到 webm 仅创建具有 1 帧(快照)或空 .webm 文件(mjpeg)的文件 .webm

转载 作者:行者123 更新时间:2023-12-04 23:27:12 28 4
gpt4 key购买 nike

我的问题是,当我尝试将一系列 jpeg 转换为 webm 视频时。我要么得到一个带有单帧的 webm 文件,要么得到一个没有任何内容的 webm 文件(0 kb)。

var fs = require('fs');
var path = require('path');

var outStream = fs.createWriteStream(__dirname+'/output.webm');
var ffmpeg = require('fluent-ffmpeg');

这是一个 mjpeg 流 URL。它产生一个什么都没有的文件。
//var proc = new ffmpeg({source:'http://xxx.xxx.xxx.xxx/goform/stream?cmd=get&channel=0',timeout:0})

这是一个快照 URL。它产生一个单帧文件。
var proc = new ffmpeg({source:'http://xxx.xxx.xxx.xxx/snapshot/view0.jpg',timeout:0})

.fromFormat('mjpeg')
.size('2048x1536')
.toFormat('webm')
.withVideoBitrate('800k')
.withFps(20)

我试过用管道代替但没有骰子:(
//.pipe(outStream,{end:false});
.writeToStream(outStream,{end:false})

任何帮助表示赞赏。

在这一点上,我准备使用带有 exec 的基本 shell 命令,但是当我尝试时,我也只是得到错误。是的,不用说我是菜鸟。

旁注:

我尝试过 zoneminder 之类的东西,但它只是破坏了我们的相机和相机数量。所以我正在制作一个简单的解决方案来记录它们。使用我们当前的云服务,我们错过了非常重要的时刻,而且它在能源和时间上的成本更高。

最佳答案

感谢所有看过并试图弄清楚的人:)

我用这种方法取得了一些成功。它基本上适用于 快照网址 而不是 MJPEG。这使用请求。但从技术上讲,您可以使用任何东西,因为该方法使用 . image2pipe .

var spawn = require('child_process').spawn;
var request = require('request');
var args = '-f image2pipe -r 1 -vcodec mjpeg -i - -f webm -r 1 test3.webm';
var encoder = spawn('ffmpeg', args.split(' '));
encoder.stderr.pipe(process.stdout);
var interval = function(){
request('http://xxx.xxx.xxx.xxx/snapshot/view0.jpg',function(er){
if(er){console.log(er)}
setTimeout(function(){interval()},1000)
}).pipe(encoder.stdin,{end:false})
}
interval();

我本可以使用 设置间隔 但我只希望它在完成请求后重试。

编辑:
事实证明,当我尝试在最初的问题中使用该方法时,我的相机已关闭,所以我不确定它是否有效……但我知道这适用于 MJPEG
var spawn = require('child_process').spawn;
var args = '-f mjpeg -framerate 1 -i http://xxx.xxx.xxx.xxx/goform/stream?cmd=get&channel=0 -vcodec libvpx -framerate 1 -bitrate 256k video_file.webm -y';
console.log(args)
var encoder = spawn('ffmpeg', args.split(' '));
encoder.stderr.pipe(process.stdout);

关于node.js - ffmpeg jpeg 流到 webm 仅创建具有 1 帧(快照)或空 .webm 文件(mjpeg)的文件 .webm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40560255/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com