从命令行查找给定时间间隔内持续时间的所有视频文件

从命令行查找给定时间间隔内持续时间的所有视频文件

如何找到持续时间在特定时间间隔内的所有视频文件。

例如,查找持续时间在 20 到 40 分钟之间的所有视频文件。

答案1

以下脚本将为您完成这项工作。它假设视频位于一个目录中(而不是整个系统中)。

该脚本还假设您已avprobe安装,它是avconv.如果您有的话,应该与ffprobe( 的一部分) 具有相同的语法。ffmpeg如果输出ffprobe不同,则需要编辑脚本。

然而,持续时间需要以秒为单位 - 保存会进行计算。

#!/bin/sh

# NOTE: Assumes you have avprobe installed and the full path
# to it is /usr/bin/avprobe - if not, edit.

# Where are the videos?
MASTER="/home/tigger/Videos"
# Duration min in seconds (1200 = 20min)
DUR_MIN="1200"
# Duration max in seconds (2400 = 40min)
DUR_MAX="2400"

# Get a list of files
LIST=`find "$MASTER" -type f`

# In case of a space in file names, split on return
IFS_ORIG=$IFS
IFS="
"

valid="\nList of videos with duration between $DUR_MIN and $DUR_MAX seconds"

# Loop over the file list and probe each file.
for v in $LIST
do
    printf "Checking ${v}\n"
    dur=`/usr/bin/avprobe -v error -show_format_entry duration "${v}"`
    if [ -n $dur ]
    then
        # Convert the float to int
        dur=${dur%.*}
        if [ $dur -ge $DUR_MIN -a $dur -le $DUR_MAX ]
        then
            valid="${valid}\n$v"
        fi
    fi
done

printf "${valid}\n"
exit

相关内容