如何在FFmpeg中模拟OpenFile?

时间:2019-07-15 07:45:42

标签: c ffmpeg buffer hook

大多数gif捕获软件捕获屏幕,然后将它们一帧一帧地保存在磁盘上,然后将它们读入内存并将它们组合为gif,使整个过程非常缓慢。

我想到了用DirectX捕获屏幕的方法(因此,由于它可以直接操作屏幕d3d设备,因此我们也可以更快地捕获DirectX窗口)API来获取位图,然后将其保存到内存(例如缓冲区)中,然后传递ffmpeg的内存位置可以产生视频,因此我们不需要将磁盘存储作为中间缓冲区,因此可以将磁盘存储速度提高十倍,因为磁盘现在是PC上最慢的部分。

directx捕获屏幕部分已经存在。但是我发现ffmpeg使用OpenFile读取图片文件,因此在这里我们可以模拟OpenFile吗? 如果答案是肯定的,我们该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以打开一个命名管道并将其用作源。

一个例子: ffmpeg -f rawvideo -vcodec ravideo -s $width$x$height$ -r $framerate -pix_fmt $pixelFormat$ -i "\\.\pipe\$pipeName$" Output.gif

您必须确定要馈入FFmpeg的帧的格式,因此需要确定-s-pix_fmt参数。