【问题标题】:FFmpeg and bash, Transcode multiple files to another drive with save pathFFmpeg 和 bash,使用保存路径将多个文件转码到另一个驱动器
【发布时间】:2026-01-20 06:35:01
【问题描述】:

我的文件夹包含许多不同路径中的文件,例如:folder1/subfolder1/file.mov 文件夹1/子文件夹2/file.mov

我需要将所有文件转换并复制为另一种格式,并将所有路径保存在文件夹 1 之后,例如: 文件夹2/子文件夹1/file.mp4 文件夹2/子文件夹2/file.mp4

我有这个脚本,但它会将转码后的文件保存在原始位置。

#!/bin/bash
MOVIES=/Volumes/drive/
find "$MOVIES" -name '*.MP4' -exec sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.MP4}.mov"' {} \; exit;

请帮忙 谢谢!

【问题讨论】:

    标签: bash path ffmpeg save transcoding


    【解决方案1】:

    "${0%%.MP4}.mov" 部分替换为"folder2/$(dirname ${0#*/})/$(basename $0 .MP4).mov"。这不会容忍路径中有空格的 MP4。

    ffmpeg 是否创建目录?如果没有,请在 ffmpeg 之前插入:

    mkdir -p "folder2/$(dirname ${0#*/})";
    

    【讨论】:

    • 谢谢你,很抱歉回答太长,现在我有了这个。 code#!/bin/bash MOVIES=~/Desktop/folder1/ find "$MOVIES" -name '*.mov' -exec sh -c 'mkdir -p "/Volumes/Victory/folder2/$(dirname ${0#*/})"; ffmpeg -i "$0" -c copy "/Volumes/Victory/folder2/$(dirname ${0#*/})/$(basename $0 .MP4).mov"' {} \; exit; 它不能正常工作。运行此代码后,我在 /Volumes/Victory/folder2 路径中转码了没有扩展名为“原始”的文件。我做错了什么?原始文件是“/Users/victor/Desktop/Folder1/B-Rolls/Original Media/Clip #21.mov”谢谢,Vic
    最近更新 更多