Ffmpeg 使用 filter_complex_script 出现内存不足问题

Ffmpeg 使用 filter_complex_script 出现内存不足问题

我正在尝试使用 ffmpeg 对视频进行“移动裁剪”,请回答以下问题:https://stackoverflow.com/questions/78314831/ffmpeg-dynamic-cropping-using-sendcmd-correct-syntax

我在文件中指定裁剪坐标

!ffmpeg -y -loglevel error -i input.mp4 -filter_complex_script crop_coordinates.txt -map "[out]" -c:v libx264 -c:a aac -r 29.97 output.mp4

我的文件如下所示:

nullsrc=608x1080:r=29.97[cv];
[cv][0]overlay=-642:-0:shortest=1:enable='eq(n\,0)'[b0];
[b0][0]overlay=-642:-0:shortest=1:enable='eq(n\,1)'[b1];
[b1][0]overlay=-642:-0:shortest=1:enable='eq(n\,2)'[b2];
...

我的问题是,当我尝试运行 ffmpeg 命令时,我遇到了内存不足的问题(google colab 使用 ^C 停止我的命令)。我使用了整个 google colab RAM,即 12GB。编辑:刚刚尝试使用 30GB RAM 的机器,也耗尽了内存。

问题似乎与txt 文件,而不是输入视频的大小。如果我的文件包含几行(根据我的测试最多 900 行),则命令成功运行。超过这个数字,我就会遇到内存问题。即使我的输入视频是分辨率为 1920x1080 的 5 秒剪辑,超过 900 行也会出现 OOM 问题。这似乎有点奇怪,因为包含 900 行的文件对应 56KB 文件和最终 30 秒的视频……这并不多!

那么有没有办法避免这种情况?比如限制 ffmpeg 的整体内存消耗,或者加载多个小文件而不是一个大文件?速度对我来说不是什么大问题,我只希望无论 txt 文件的大小如何,我的命令都不会被中断。

相关内容