从命令行获取文件夹的音频播放时间

从命令行获取文件夹的音频播放时间

Linux命令行(bash)有没有办法/工具来获取某个目录的整体音频播放时间?

就像是:

playtime --all --recursive /Music/DrumAndBass/
output: 1:35:06

答案1

我通过使用该工具找到了一种简单的mp3info方法awk

不幸的是,这仅适用于 mp3 文件。

mp3info -p "%m:%s\n" directory/*.mp3 |
awk -F: '{a+=$1*60+$2}END{printf"%d:%02d:%02d",a/3600,a%3600/60,a%3600%60}'

或者作为小 bash 脚本

#!/bin/bash

dir="$1"

mp3info -p "%m:%s\n" "$dir/*.mp3" |
awk -F: '{a+=$1*60+$2}END{printf"%d:%02d:%02d",a/3600,a%3600/60,a%3600%60}'

感谢@steve 的awk-line


更新:

sndfile-info或者sox可以获取不同文件格式的播放时间,例如flacwav

sndfile-info audio.flac | awk '/^Duration/ { print $3 }'

sox解决方案:

sox -V3 audio.flac -n |& awk '/^Duration/ { print $3;exit }'

(命令exit中的awk限制输出仅打印第一个匹配项)

相关内容