명령줄에서 폴더의 오디오 재생 시간 가져오기

명령줄에서 폴더의 오디오 재생 시간 가져오기

특정 디렉터리의 전체 오디오 재생 시간을 가져오는 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}'

awk-line 에 대해 @steve에게 감사드립니다.


고쳐 쓰다:

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

관련 정보