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

Mac OS X下MP4视频压缩迁移脚本优化:仅成功压缩后移动原文件

嘿,这个需求太务实了——毕竟没人想因为压缩失败弄丢珍贵的原视频对吧?针对Mac OS X环境,我给你整理了一套靠谱的优化方案,核心就是把压缩成功作为后续操作的前置条件,具体如下:

优化方案:确保压缩成功后再操作原文件

1. 核心逻辑:依赖命令退出状态码做校验

在Mac的Shell环境里,任何命令执行完成都会返回一个退出码(通过$?变量获取):

  • 命令成功执行时返回 0
  • 失败(比如编码错误、文件损坏、参数错误)时返回非0值

我们要做的就是:只有当压缩命令的退出码为0时,才执行「移动原文件」和「导入Lightroom」的操作,从根源避免误操作。

2. 具体脚本示例(以FFmpeg为例)

假设你原本用FFmpeg做压缩,调整后的脚本大概是这样(可以直接替换你的配置参数):

#!/bin/bash

# -------------------------- 配置参数 --------------------------
SOURCE_DIR="/Users/xxx/Camera/RawVideos"   # 原视频存放目录
COMPRESSED_DIR="/Users/xxx/Camera/Compressed"  # 压缩文件输出目录
ARCHIVE_DIR="/Users/xxx/Camera/ArchivedRaw"    # 原文件归档目录
LIGHTROOM_CATALOG="/Users/xxx/Pictures/Lightroom Catalog.lrcat"  # Lightroom目录路径
# -------------------------------------------------------------

# 遍历目录下的原视频(这里以mp4为例,可根据实际格式调整,比如*.mov)
for RAW_VIDEO in "$SOURCE_DIR"/*.mp4; do
    # 跳过空目录(如果没有匹配到任何视频文件的话)
    [ -e "$RAW_VIDEO" ] || continue

    # 生成压缩后的文件名(比如在原文件名后加"_compressed"后缀)
    BASENAME=$(basename "$RAW_VIDEO" .mp4)
    COMPRESSED_VIDEO="$COMPRESSED_DIR/${BASENAME}_compressed.mp4"

    # 执行压缩命令(这里用H.265编码,压缩率高且画质损失小,适合Mac)
    ffmpeg -i "$RAW_VIDEO" -c:v libx265 -crf 28 -c:a aac -b:a 128k "$COMPRESSED_VIDEO"

    # 检查压缩是否成功
    if [ $? -eq 0 ] && [ -f "$COMPRESSED_VIDEO" ]; then
        echo "✅ 压缩成功:$RAW_VIDEO"
        
        # 移动原文件到归档目录
        mv "$RAW_VIDEO" "$ARCHIVE_DIR/"
        echo "📦 原文件已归档:$RAW_VIDEO -> $ARCHIVE_DIR"

        # 导入压缩文件到Lightroom(用第三方工具lrtool,需要先通过brew install lrtool安装)
        lrtool import --catalog "$LIGHTROOM_CATALOG" "$COMPRESSED_VIDEO"
        echo "📸 已导入Lightroom:$COMPRESSED_VIDEO"
    else
        echo "❌ 压缩失败:$RAW_VIDEO,跳过后续操作"
        # 可选:删除生成失败的残缺压缩文件
        rm -f "$COMPRESSED_VIDEO"
    fi
done

3. 额外优化建议

  • 用HandBrakeCLI替代FFmpeg:如果你更习惯HandBrake的预设,也可以替换压缩命令,校验逻辑完全一致:
    HandBrakeCLI -i "$RAW_VIDEO" -o "$COMPRESSED_VIDEO" --preset "Fast 1080p30"
    if [ $? -eq 0 ] && [ -f "$COMPRESSED_VIDEO" ]; then
        # 后续归档+导入操作
    fi
    
  • 添加日志记录:可以把脚本的运行日志写入文件,方便后续排查问题,在脚本开头加上:
    exec > >(tee -a /Users/xxx/Logs/VideoCompress.log) 2>&1
    
  • 原生Lightroom导入:如果不想用第三方工具lrtool,可以用AppleScript触发Lightroom的原生导入,在Shell脚本里这样调用:
    osascript -e "tell application \"Adobe Lightroom Classic\"" \
              -e "import from POSIX file \"$COMPRESSED_VIDEO\" into catalog \"$LIGHTROOM_CATALOG\"" \
              -e "end tell"
    
  • 权限检查:确保脚本对原文件目录、压缩目录、归档目录都有读写权限,Lightroom的目录也要允许脚本访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:31:57