媒体文件列表及其时长

媒体文件列表及其时长

我想从所有符合以下模式的文件夹中获取 mp4 文件列表及其相应的持续时间

例如:LO1/LO1.MP4,LO3/LO3.MP4

我尝试执行以下操作但得到多个条目并且我无法弄清楚文件名:

$ mediainfo /var/www/videos/L*/L*.mp4 | grep 持续时间
时长:25分54秒
时长:25分54秒
材料持续时间:1554665
时长:25分54秒
材料持续时间:1554688
时长:37 分 21 秒
时长:37 分 21 秒
材料持续时间:2241664
时长:37 分 21 秒
材料持续时间:2241696
时长:26分6秒
时长:26分6秒
时长:26分6秒
时长:30分41秒
时长:30分41秒
时长:30分41秒
时长:39 分 41 秒
时长:39 分 41 秒
时长:39 分 41 秒
Duration_LastFrame :-7ms
时长:37 分 2 秒
时长:37 分 2 秒
时长:37 分 2 秒
Duration_LastFrame:-12ms
时长:34 分 24 秒
时长:34 分 24 秒
时长:34 分 24 秒
时长:31分7秒
时长:31分7秒
时长:31分7秒
时长:31分57秒
时长:31分57秒
时长:31分57秒
时长:29分30秒
时长:29分30秒
时长:29分30秒
时长:36分28秒
时长:36分28秒
时长:36 分 27 秒
材质持续时间:2187988

那么我如何才能获取文件名列表(.mp4)及其相应的持续时间?

答案1

我不知道 mediainfo 的输出,但这是我使用 ffrobe (或 ffmpeg -i)的方法,这将获得持续时间

ffprobe $fn 2>&1|grep Duration|sed -e 's/^[ \t]*//'|cut -d" " -f2|cut -d. -f1

使用 find 将为您获取文件名

find /var/www/videos/L* -type f -name L\*.mp4

因此,你可以在一个小的 for 循环中将所有内容组合在一起以获取列表

for fn in `find /var/www/videos/L* -type f -name L\*.mp4`;
do
    dur=`ffprobe $fn 2>&1|grep Duration|sed -e 's/^[ \t]*//'|cut -d" " -f2|cut -d. -f1`
    echo "$fn $dur"
done

相关内容