ffmpeg concat 与过滤器耗尽所有内存

ffmpeg concat 与过滤器耗尽所有内存

我一直在尝试制作文件夹中视频列表的无限循环。出于测试目的,我仅使用 2 个视频作为输入。然后我将它们连接起来以产生 1280X720 的输出。

但是,当我这样做时,我注意到它占用了我服务器的所有内存,该服务器有 16GB 内存和 4GB 的 swp 内存。

在我开始编码过程之前,交换内存为 2.95 GB,内存约为 1 - 1.5GB。

每次我运行它,编码大约需要 7 分 37 秒。然后内存和 swp 内存全部填满,ffmpeg 退出而无任何响应。

我的 ffmpeg 命令是:

ffmpeg -hide_banner -y -stats -fflags +genpts+discardcorrupt -nostdin -re -i /home/bardan/content/BBB.mp4 -re -i /home/bardan/content/TOS.mp4 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v0];[1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v1];[0:a]aformat=sample_rates=44100:channel_layouts=stereo[a0];[1:a]aformat=sample_rates=44100:channel_layouts=stereo[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1[vconcat][aconcat];[vconcat]split=2[vloop0][vloop1];[aconcat]asplit=2[aloop0][aloop1];[vloop0][aloop0][vloop1][aloop1]concat=n=2:v=1:a=1[vlooped][alooped]" -map "[vlooped]" -map "[alooped]" -c:v libx264 -b:v 2500k -c:a aac -movflags +faststart -f flv -flvflags no_duration_filesize -shortest  -max_delay 0.5 -vsync 0 rtmp://{rtmp_url}:1935/livehd/livestreamloop_720p2500kbs

过去几天我一直在努力寻找解决方案。一直在网上搜索解决方案,我甚至尝试使用 chatgpt 来获取解决方案。上述命令是 chatgpt 提出的最后一条建议。我甚至在 stackoverflow 上找不到任何关于我的问题的答案。

然而,无济于事,我只好向 stackoverflow 上的朋友寻求建议,以帮助我解决这个问题。

顺便说一句,我一直在使用 ffmpeg 进行简单的编码。但我还不太理解 concat 和 filter 的结合。

相关内容