You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFmpeg循环播放文件夹MP4流时进程被终止的问题求助

解决FFmpeg循环推流MP4文件时被Killed的问题

看起来你遇到的Killed错误大概率是内存不足导致的——你的脚本用了filter_complex的concat滤镜,这个滤镜会把所有输入的MP4文件都加载到内存里,一旦视频数量多或者单文件体积大,系统内存扛不住就会被内核强制杀掉FFmpeg进程。

下面给你两个可行的解决方案,优先推荐第一个,因为它更高效、更稳定:

方案1:使用FFmpeg Concat Demuxer(推荐)

这个方式是通过文本列表指定要播放的文件,FFmpeg会逐个读取处理,不会一次性把所有文件塞进内存,完美解决内存溢出问题,还能轻松实现持续循环推流。

修改后的完整脚本如下:

#!/bin/bash
VBR="2500k"
FPS="30"
QUAL="medium"
# 注意:你的推流地址是Twitch的,建议把变量名改成TWITCH_URL更清晰
TWITCH_URL="rtmp://live.twitch.tv/app/"
FOLDER="videos"
KEY="live_16xxxxxxxxxxx_xxxvO7C"

# 持续循环推流逻辑
while true; do
    # 生成临时文件列表(每次循环重新生成,适配文件夹内文件的变动)
    rm -f playlist.txt
    for f in "$FOLDER"/*.mp4; do
        # 写入绝对路径,配合后续的-safe 0参数避免FFmpeg路径权限问题
        echo "file '$PWD/$f'" >> playlist.txt
    done

    # 启动FFmpeg推流
    ffmpeg \
        -f concat -safe 0 -i playlist.txt \
        -deinterlace \
        -vcodec libx264 -pix_fmt yuv420p -preset "$QUAL" -r "$FPS" -g $((FPS * 2)) -b:v "$VBR" \
        -acodec libmp3lame -ar 44100 -threads 6 -b:a 712000 -bufsize 512k \
        -f flv "$TWITCH_URL/$KEY"

    # 如果FFmpeg意外退出,短暂等待后自动重启循环
    echo "FFmpeg进程退出,2秒后重新启动推流..."
    sleep 2
done

脚本关键说明:

  • while true 实现无限循环,即使某段视频播放出错或推流临时中断,也会自动重启推流
  • playlist.txt 是临时生成的文件列表,每次循环都会重新生成,如果你在videos文件夹新增/删除MP4,下次循环会自动生效
  • -f concat -safe 0 告诉FFmpeg使用concat demuxer模式,-safe 0允许列表使用绝对路径,避免相对路径的访问权限问题
  • 移除了原脚本里的qscale 3,因为libmp3lame编码器在指定b:a比特率后,qscale的参数会被覆盖,保留它没有实际作用

方案2:优化原Concat Filter的内存占用(不推荐)

如果你非要坚持使用原脚本的filter_complex concat方式,只能通过扩容系统内存或临时启用swap交换空间来缓解,但本质上还是不如demuxer高效。比如临时创建1GB swap:

# 创建1GB的swap文件
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

注意:这是临时方案,系统重启后swap会失效,且如果视频数量过多,还是会触发内存溢出被杀掉,因此优先选择方案1。

额外注意事项:

  • 原脚本里的YOUTUBE_URL变量实际指向Twitch的推流地址,建议改成TWITCH_URL,避免后续维护时混淆
  • 确保videos文件夹内的MP4文件编码格式统一(比如都是H.264视频+AAC音频),如果编码不一致,推流可能出现花屏、无声音等问题,遇到这种情况建议先统一转码格式

内容的提问来源于stack exchange,提问作者Tregor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:02:36