suu*_*ser 2 video terminal media time ffmpeg
我想从与以下模式匹配的所有文件夹中获取 mp4 文件列表及其相应的持续时间
例如:LO1/LO1.MP4,LO3/LO3.MP4
我尝试了以下操作,但我得到了多个条目,而且我无法弄清楚文件名:
$ mediainfo /var/www/videos/L*/L*.mp4 | 持续时间 持续时间:2500万54秒 持续时间:2500万54秒 Material_Duration : 1554665 持续时间:2500万54秒 Material_Duration : 1554688 时长:3700万21秒 时长:3700万21秒 Material_Duration : 2241664 时长:3700万21秒 Material_Duration : 2241696 持续时间 : 2600 万 6 秒 持续时间 : 2600 万 6 秒 持续时间 : 2600 万 6 秒 时长:3000万41秒 时长:3000万41秒 时长:3000万41秒 时长:3900万41秒 时长:3900万41秒 时长:3900万41秒 Duration_LastFrame:-7ms 持续时间 : 3700 万 2 秒 持续时间 : 3700 万 2 秒 持续时间 : 3700 万 2 秒 Duration_LastFrame:-12ms 持续时间 : 3400 万 24 秒 持续时间 : 3400 万 24 秒 持续时间 : 3400 万 24 秒 持续时间 : 3100 万 7 秒 持续时间 : 3100 万 7 秒 持续时间 : 3100 万 7 秒 时长:3100万57秒 时长:3100万57秒 时长:3100万57秒 持续时间 : 2900 万 30 秒 持续时间 : 2900 万 30 秒 持续时间 : 2900 万 30 秒 持续时间 : 3600 万 28 秒 持续时间 : 3600 万 28 秒 持续时间 : 3600 万 27 秒 Material_Duration : 2187988
那么如何获得文件名(.mp4)列表及其相应的持续时间?
小智 5
我不知道 mediainfo 的输出,但这就是我使用 ffrobe(或 ffmpeg -i)的方式,这将获得持续时间
ffprobe $fn 2>&1|grep Duration|sed -e 's/^[ \t]*//'|cut -d" " -f2|cut -d. -f1
Run Code Online (Sandbox Code Playgroud)
使用 find 将为您获取文件名
find /var/www/videos/L* -type f -name L\*.mp4
Run Code Online (Sandbox Code Playgroud)
所以你可以在一个小的 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |