我想从所有符合以下模式的文件夹中获取 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