【问题标题】:Have python translate the correct file name让python翻译正确的文件名
【发布时间】:2018-04-24 14:20:38
【问题描述】:

我正在尝试制作一个简单的小程序,可以从一堆图片中制作视频。

我发现了这个:

os.system("ffmpeg -r 1 -i img%01d.png -vcodec mpeg4 -y movie.mp4")

只有当文件名是 imgxxx.png 时才有效

我的文件名为:xx.xx.xx.xxx.jpg(例如:11.58.30.445.jpg)。正如您可能理解的那样,文件名是从拍摄照片时开始的。

我已经尝试了几个选项,但我无法让 python 读取正确的文件。我可以重命名所有文件,但我希望程序自行运行,因此重命名所有文件不是我正在寻找的解决方案。

提前感谢所有帮助。

【问题讨论】:

  • 你试过%02d.%02d.%02d.%03d.jpg吗?
  • 文件名应该如何排序?一个简单的数字排序就足够了吗?或者请详细说明文件命名约定
  • 这对我来说似乎不是 Python 问题。它是关于ffmpeg 的命令行参数是如何被解析的。 Python 对这个os.system 字符串什么都不做
  • @CoryKramer %02d.%02d.%02d.%03d.jpg 是我尝试的第一件事。我认为它必须是这样的,但那没有用。
  • @Guillaume,其他文件是 11.58.31.387.jpg、11.58.33.913.jpg、11.58.35.226.jpg 等。所以这只是每张图片的时间戳。

标签: python python-3.x ffmpeg filenames


【解决方案1】:

您可以按照@CoryKramer 在他的评论中所说的那样尝试。最简单的方法是在将文件传递给 os.system 方法之前找到要对文件进行排序的顺序。为简单起见,您可以使用简单的 bash 脚本或 python 脚本重命名文件。

【讨论】:

    【解决方案2】:

    image file demuxer中使用全局模式:

    ffmpeg -framerate 1 -pattern_type glob -i "*.jpg" -r 25 -pix_fmt yuv420p out.mp4
    
    • Windows 版本可能不支持-pattern_type glob
    • 使用-framerate 而不是-r 用于图像文件解复用器。
    • 我添加了一个输出 -r,因为许多玩家无法处理 1 的帧速率。帧将被复制以从 1 到 25 帧速率。
    • 我添加了-pix_fmt yuv420pmpeg4 不需要它,但如果您想使用libx264 以获得更兼容的像素格式,建议使用它。

    【讨论】:

    • 就是这样!谢谢! os.system("ffmpeg -r 2 -i %*.jpg -vcodec mpeg4 -y movie.mp4") 就是这样。
    • @DutchNinja 您的命令缺少-pattern_type glob,因此使用了已弃用的-pattern_type glob_sequence。使用:ffmpeg -y -framerate 2 -pattern_type glob -i "*.jpg" -vcodec mpeg4 movie.mp4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多