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

Mac终端下用FFmpeg批量处理GoPro MP4文件报错:*.mp4不存在

解决Mac终端批量处理GoPro MP4文件的循环命令报错问题

首先,你遇到的"*.mp4: No such file or directory"错误,大概率是文件名大小写匹配的问题——GoPro默认导出的视频文件后缀是大写的.MP4,而你的命令里用的是小写的*.mp4。Mac默认的Shell(zsh或bash)在文件名匹配时是区分大小写的,所以系统找不到任何小写后缀的文件,才会抛出这个错误。

下面给你几个针对性的解决方案:

方案1:直接匹配大写后缀

既然GoPro文件是.MP4,直接修改命令里的匹配规则即可:

for i in *.MP4; do ffmpeg -i "$i" -vf "hflip,vflip" "${i%.*}_r.mp4"; done

方案2:开启大小写不敏感匹配

如果你的目录里同时存在大小写后缀的MP4文件,可以临时让Shell忽略大小写:

  • 如果你用的是zsh(Mac默认Shell):
    先执行这条命令开启不敏感匹配,再运行你的循环:
    setopt nocaseglob
    for i in *.mp4; do ffmpeg -i "$i" -vf "hflip,vflip" "${i%.*}_r.mp4"; done
    
  • 如果你用的是bash:
    先执行这条命令,再运行循环:
    shopt -s nocaseglob
    for i in *.mp4; do ffmpeg -i "$i" -vf "hflip,vflip" "${i%.*}_r.mp4"; done
    

方案3:zsh专属的大小写不敏感匹配语法

zsh支持在glob表达式后加(#i)来单独忽略当前匹配的大小写,不用全局设置:

for i in *.mp4(#i); do ffmpeg -i "$i" -vf "hflip,vflip" "${i%.*}_r.mp4"; done

验证小技巧

你可以先运行echo *.mp4测试:如果输出是*.mp4本身,说明确实没有匹配到任何小写后缀的文件;如果输出是具体的文件名,那再检查是否有其他特殊字符(不过你已经用双引号包裹了$i,空格这类特殊字符应该已经被正确处理了)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:37:22