【问题标题】:Output filename extension in fswatch and ffmpegfswatch 和 ffmpeg 中的输出文件扩展名
【发布时间】:2020-06-30 08:16:05
【问题描述】:

我遇到了文件命名扩展输出的问题。我的输入是需要使用 FFMPEG 转换为 MP4 的 JPG 文件。但是,当我运行下面的代码时,它会输出为img1.jpg.mp4,包括输入文件扩展名,而不仅仅是img1.mp4

fswatch -e ".*" -i "\\.jpg$" . |xargs -n1 basename|xargs -n1 -t -I {} sh -c 'pwd;[[ -f {} ]] && ffmpeg -y -loop 1 -i "{}" -vf "fade=t=in:st=0:d=1,fade=t=out:st=2:d=1" -preset "ultrafast" -c:v libx264 -t 3 -pix_fmt yuv420p "{}.mp4"'

非常感谢任何帮助。

在 MAC、SH/BASH 上运行

已编辑:

顺便说一句,我也尝试了一个循环来完成类似下面代码的技巧,但我正在寻找更简洁的解决方案,以在上面的同一行代码中修复它或在 FSWATCH 成功操作后调用函数。

 for file in
     *.jpg.mp4; do
        mv "$file" "$(basename "$file" .jpg.mp4).mp4"
    done

【问题讨论】:

    标签: bash ffmpeg sh fswatch


    【解决方案1】:

    喜欢这个sed:

    fswatch -e ".*" -i "\\.jpg$" . |
    xargs -n1 basename |
    sed 's/\.jpg$//' |
    xargs -n1 -t -I {} sh -c 'pwd;[[ -f {}.jpg ]] && ffmpeg -y -loop 1 -i "{}.jpg" -vf "fade=t=in:st=0:d=1,fade=t=out:st=2:d=1" -preset "ultrafast" -c:v libx264 -t 3 -pix_fmt yuv420p "{}.mp4"'
    

    【讨论】:

    • 感谢分享!看起来 sed 不适用于 fswatch,这需要任何依赖项吗?
    猜你喜欢
    • 2012-04-09
    • 2016-04-15
    • 1970-01-01
    • 2020-10-10
    • 2020-10-16
    • 1970-01-01
    • 2019-08-19
    • 2017-02-06
    • 2017-11-13
    相关资源
    最近更新 更多