关于文件名:使用时间戳而不是序列号来命名ffmpeg生成的图像 |
您所在的位置:网站首页 › 如何生成序列号格式文件 › 关于文件名:使用时间戳而不是序列号来命名ffmpeg生成的图像 |
据我从ffmpeg文档中了解,它们没有提供在文件名中使用时间戳而不是序列号的方法。 他们提供的内容使您可以创建0001.jpg,0002.jpg,0003.jpg,但不能创建2011-08-01 7:30:00.jpg,2011-08-01 7:30:01.jpg,2011-08- 01 7:30:02.jpg。 谁能想到一种解决方案,可以从ffmpeg中获取顺序命名的文件,并使用其创建时间对其进行命名? 相关讨论 另请参阅stackoverflow.com/q/8544816/32453 可能如何在ffmpeg中添加时间戳作为生成的图像文件名的一部分 您可以将时间戳记附加为文件名,请参见至少ffmpeg的较新版本具有strftime选项,该选项使您可以执行所需的操作。 例如: 1ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1"%Y-%m-%d_%H-%M-%S.jpg"将生成如下文件: 12015-11-20_16-25-06.jpg我在源代码上运行了这个grep: 1234ffmpeg$ fgrep -r snprintf *|grep name ... ffmpeg.c: snprintf(filename, sizeof(filename),"vstats_%02d%02d%02d.log", today->tm_hour, today->tm_min, ...肯定有代码生成带有日期的文件名。 您可以尝试使用-vstats选项运行命令。也许它将为每个输出文件生成一个日志文件。 不幸的是,代码非常复杂。我现在看不到创建JPEG文件名的位置。如果您的程序直接运行,请使用" strace",但是我对此很懒。 相关讨论 我运行了vstats选项,它为处理的每个帧创建了一个日志文件,但是对我的需求没有帮助:pastie.textmate.org/private/372wq10ebsuqhlrqhg在unixoid系统上,可以使用find + ImageMagick来识别每个文件及其创建日期时间。通常必须安装ImageMagick: 12345find -name"*.jpg" -execdir identify -verbose {}";" -ls | egrep"(create|^Image)" Image: ./logo-text-u-sinn.4.2.do.jpg date:create: 2011-08-03T12:16:55+02:00 Image: ./tasten-in-tasse_3919.jpg date:create: 2011-06-14T22:37:07+02:00gnu:find也可用于Windows,但通常不由Microsoft分发。取而代之的是,Microsoft有其自己的劣等(afaik)find(.exe),其语法非常不同。 因此,如果安装gnu-find,则必须使用整个路径来调用它,或者例如将其重命名为gfind,以防止名称冲突。 我会写一个小脚本 12345#!/bin/bash name=$1 dt=$(identify -verbose $name grep"create:") datetime=${dt/*create:/} mv $name $datetime.jpg这很容易受到文件名(包括空格)的影响,但是如果您的文件始终被命名为0001.jpg等,那将没有问题。 该脚本将产生2011-08-03T12:39:42+02:00作为文件名,例如,可以通过find调用: 1find -name"*.jpg" -execdir ./myscript.sh {}";"如果您不使用/没有bash,则需要进行相应的修改。 警告: 你必须要小心。如果两个或更多文件的时间相同,它们将被静默覆盖。当然,您可以在脚本中进行检查,也许文件系统可以比秒间隔更精确地存储日期。 相关讨论 我认为您不需要运行识别。 您可以只使用文件的创建日期。 或者,您可以只搜索生成文件名的点并与当前时间交换。 如果没有保留文件属性就没有移动文件,则可以。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |