我需要获取文件名和路径以及文件时长的列表。所有文件都是视频文件。有些文件也在子文件夹中。我需要按时长排序的列表。我的目标是删除时长少于 2 分钟的文件。我可以通过终端或 GUI 来做到这一点吗?
答案1
这将为您提供指定文件夹中少于 120 秒的 mp4 列表,包括子文件夹
find ~/pathtofolder -iname '*.mp4' -type f > vidfiles && while read f; do echo -n "$f: "; ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"; done < vidfiles | awk '$NF<120' > shortvids
只需将其更改~/pathtofolder
为您的目标位置即可。
该列表将保存在名为shortvids
我很抱歉没有进行排序,但如果列表中只有短视频,我认为没有必要。
如果您想更改持续时间,请在结尾处更改'$NF<120'
为秒数。例如,'$NF<300'
表示“时长少于 5 分钟(或 300 秒)“
当然你也可以找到持续时间比...更棒或者等于通过改变符号,<
即改为>
或=
答案2
如果你不使用外部程序,那你就倒霉了,file videoname.xyz
它不会返回视频的时长。另一方面,avprobe (ffprobe)从包中libav 工具做!
您需要执行递归目录遍历(例如在 Python 中),调用AVPROBE 系统(通过子进程),解析输出中的持续时间并将播放长度和文件名存储在合适的结构中。