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

FFmpeg Bash脚本多子文件夹合并编码路径问题解决

解决方案:GoPro视频批量压缩合并脚本(Mac OS终端)

下面是修正后的Bash脚本,完全匹配你的需求,解决了路径处理和输出命名的问题:

#!/bin/bash

# 网络服务器的视频存储目录,确保已挂载且有写入权限
OUTPUT_DIR="/Volume/Server/Videos"

# 遍历100GOPRO下所有以A开头的子文件夹
for dir in A*/; do
    # 提取纯文件夹名称(移除末尾的斜杠)
    folder_name="${dir%/}"
    
    # 进入目标子文件夹,若失败则跳过该文件夹
    cd "$dir" || continue
    
    # 清理旧的file.txt(如果存在)
    rm -f file.txt
    
    # 生成当前文件夹的file.txt,仅包含当前目录下的MP4文件
    for mp4_file in *.mp4; do
        echo "file '$mp4_file'" >> file.txt
    done
    
    # 调用FFmpeg合并并压缩视频,输出文件以文件夹命名
    ffmpeg -f concat -safe 0 -i file.txt "$OUTPUT_DIR/${folder_name}.mp4"
    
    # 清理当前文件夹的临时file.txt
    rm -f file.txt
    
    # 返回上级目录(100GOPRO)
    cd ..
done

关键修正说明

  • 遍历对象调整:从遍历所有MP4文件改为遍历A*/子文件夹,确保每个赛事文件夹单独处理
  • 路径处理优化:用${dir%/}移除文件夹路径末尾的斜杠,得到干净的文件夹名称(如A1)
  • 独立临时文件:在每个子文件夹内生成专属的file.txt,避免跨文件夹的视频路径混入
  • 输出命名匹配:直接用文件夹名作为输出MP4的文件名,确保A1文件夹对应输出A1.mp4

可选优化建议

  • 如果需要更高效的压缩,可以给FFmpeg添加编码参数,比如使用H.265编码减小体积:
    ffmpeg -f concat -safe 0 -i file.txt -c:v libx265 -crf 28 -c:a aac "$OUTPUT_DIR/${folder_name}.mp4"
    
  • 确保FFmpeg已安装,Mac上可通过Homebrew安装:brew install ffmpeg

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:10:47