ffmpeg将流转换为jpg缓冲区而不保存执行磁盘

时间:2018-01-02 13:12:31

标签: node.js ffmpeg stream jpeg

我有一个从客户端到服务器的webrtc视频流。 我想将流转换为jpg图像,但不将任何图像保存到磁盘(仅从内存工作)。 目前我正在使用此命令行函数(从节点js调用):

var ops = [
'-i', '-',
'-f', 'image2',
'-vcodec', 'mjpeg',
'-b:v', '1000k',
'-q:v', '2',
'-s', '640x480',
'-updatefirst', '1',
'-',
];

ffmpeg_process = cp.spawn('ffmpeg', ops);

ffmpeg_process.stdout.on('data', function(chunk) {
var size = chunk.length
data += chunk
if (((chunk[size - 2] << 8) + chunk[size - 1]) === 65497)  //EOF 
{
   if (data) 
  {
lib.addFrame(Buffer(data).toString('base64')) //full jpg data
  }
  data = ''
}
};

但是,某些输出jpg图像已损坏。这是因为有时缓冲区只包含部分jpg图像数据。

正确创建jpg图像需要传递给ffmpeg的正确参数是什么?

1 个答案:

答案 0 :(得分:0)

我不太记得,但是shinobiCE对此情况有一些代码。你可以看看这是一个巨大的项目,祝您好运!