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}'
更新:
sndfile-info
或者sox
可以获取不同文件格式的播放时间,例如flac
或wav
:
sndfile-info audio.flac | awk '/^Duration/ { print $3 }'
或sox
解决方案:
sox -V3 audio.flac -n |& awk '/^Duration/ { print $3;exit }'
(命令exit
中的awk
限制输出仅打印第一个匹配项)