【问题标题】:mac terminal ffmpeg batch recursive conversion preserving directory structuremac终端ffmpeg批量递归转换保存目录结构
【发布时间】:2020-04-13 10:11:04
【问题描述】:

我在 mac 上使用 ffmpeg 将 .flv 批量转换为 .mp4 文件。我正在尝试查找当前目录的子目录中的所有文件并将新文件保存在同一目录中。

例如开头:

subdirectory1/video1.flv
subdirectory1/video2.flv
subdirectory2/video1.flv

结尾
subdirectory1/video1.mp4
subdirectory1/video2.mp4
subdirectory2/video1.mp4

我已经做到了这一点,但不知道如何使用保留的递归目录进行保存

for i in  `find -name . "*.flv"`; do ffmpeg -i "$i" "${i%.*}.mp4"; done

【问题讨论】:

    标签: macos ffmpeg terminal


    【解决方案1】:

    也许有更好的方法,但这最终符合我的目的。我不得不重命名文件和目录以删除空格并重新处理 find 命令。 xargs 包含试图考虑空格,但它没有工作

    所以我从目录中删除了空格:

    for f in *; do mv "$f" `echo $f | tr ' ' '_'`; done
    

    并用这个从文件名中删除空格

    find . -type f -name "* *.flv" -exec bash -c 'mv "$0" "${0// /_}"' {} \;
    

    然后这个命令递归地重新编码我的flv文件并保存在他们的目录中

    for i in `find . -name "*.flv" -print0| xargs -0`; do ffmpeg -i "$i" -c:v libx264 -f mp4 "${i%.*}.mp4"; done
    

    【讨论】:

    • 为了更好的衡量标准,这也会在中途截屏 { for i in find . -name "*.flv" -print0| xargs -0;做 ffmpeg -i "$i" -vcodec mjpeg -vframes 1 -an -f rawvideo -ss ffmpeg -i "$i" 2>&1 | grep Duration | awk '{print $2}' | tr -d , | awk -F ':' '{print ($3+$2*60+$1*3600)/2}' "${i%.*}.jpg";完成}
    猜你喜欢
    • 2013-09-24
    • 2017-08-10
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多