代码之家  ›  专栏  ›  技术社区  ›  Rich

如何ffmpeg遍历10000多个日期时间戳文件

  •  0
  • Rich  · 技术社区  · 6 年前

    我有大量的jpg是从cctv摄像机上拍摄的,我在curl命令中错误地使用了虚线日期时间戳。文件名是

     Underwater-Cam-2017-10-20_17-58-22.jpg
    

    如果我用通配符

    bash: /Applications/ffmpeg: Argument list too long
    

    我从其他文章中了解到,我不希望避免使用glob扩展模式,但我不确定如何用多个序列号遍历这些文件。我试过这个连续的整数计数序列,现在回想起来显然行不通,但我缺乏足够的知识,无法通过搜索来解决这个问题。

    /Applications/ffmpeg -y -i '/path/to/src/2017-10-20/Underwater-Cam-2017-10-20_%02d-%02d-%02d.jpg' -r 24 -vf "scale=hd720" -metadata:s:v rotate=0 -vcodec libx265 -preset veryfast -crf 24 -an -movflags +faststart /path/to/dest/uwcam-2017-10-20.mp4
    

    我在mac上用Bash4做这个。

    1 回复  |  直到 6 年前
        1
  •  2
  •   cody    6 年前

    把列表输出到一个文件(不带任何globbing)并使用 ffmpeg concat demuxer ?

    例子:

    $ ls
    Underwater-Cam-2017-10-20_17-58-21.jpg  Underwater-Cam-2017-10-20_17-58-23.jpg
    Underwater-Cam-2017-10-20_17-58-22.jpg
    
    $ find -type f -name '*.jpg' -printf '%P\n' | xargs -I {} echo "file '{}'" > list
    
    $ cat list
    file 'Underwater-Cam-2017-10-20_17-58-21.jpg'
    file 'Underwater-Cam-2017-10-20_17-58-22.jpg'
    file 'Underwater-Cam-2017-10-20_17-58-23.jpg'
    

    然后 ffmpeg -f concat -i list ... <output>