Linux

從命令行獲取文件夾的音頻播放時間

  • August 17, 2019

linux命令行(bash)有沒有辦法/工具來獲取某個目錄的整體音頻播放時間?

就像是:

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

我找到了一個簡單的方法,通過使用該工具mp3infoawk.

不幸的是,這僅適用於 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-infosox可以獲得不同文件格式的播放時間,例如flacwav

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

sox解決方案:

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

(命令exitawk的將輸出限制為僅列印第一個匹配項)

引用自:https://unix.stackexchange.com/questions/476762