如何使用sox获得所有音频的音频长度



我可以使用soxi -d *来获取以小时、分钟和秒为单位的音频长度信息。

然而,它只会给我个人音频长度的信息。

如果我想查看整个文件夹的音频长度,我该如何完成这样的任务?

就像你做";wc-w";它在结尾处显示了所有内容的总和。有没有标志或我可以与soxi集成的东西?

soxi-T*

从man文件

-T用于多个文件;将-s、-d和-d的行为更改为显示所有给定文件的总数。请注意,当与-s一起用于文件时>对于不同的采样率,这是值得怀疑的价值。

假设目录中有.wav文件。

对于单个文件,使用soxi -D ...,然后使用bc求和值(如何(使用以下任何命令以秒为单位获取总数:

# in seconds
soxi -D *.wav | awk '{s+=$1}END{print s}' | bc
# in seconds 
soxi -D *.wav | paste -sd+ - | bc
# in minutes
soxi -D *.wav | awk '{s+=$1}END{print s/60}' | bc
# in hours
soxi -D *.wav | awk '{s+=$1}END{print s/60/60}' | bc

是否具有soxi?如果您愿意使用ffprobe作为ffmpeg的一部分,以下是它如何扫描我的文件夹,该文件夹具有不同的文件类型-.mp3.m4a中的AACFLAC:

假设文件名的名称中不包含等号("="(。如果是,则相应地调整csv=s=选项

gfind . -type f -not -name ".*" -print0 |
parallel -0 --bar -N 1 -j 8 
'ffprobe -hide_banner   -v 0 
-select_streams a:0

-show_entries format=format_long_name,size,filename,duration
-of csv=s="=":p=0:nk=0
-i {}'
./genieaudio_93508443_.lossless.mp3
MP2/3 (MPEG audio layer 2/3)
232.150204
9287144
./genieaudio_16277926_.aac.flac.m4a
QuickTime / MOV
232.181000
63572859
./genieaudio_16277926_.lossless.mp3
MP2/3 (MPEG audio layer 2/3)
232.280816
92923682/3)
250.096327
10004990
./genieaudio_79412303_.lossless.mp3
MP2/3 (MPEG audio layer 2/3)
250.383673
10016483
./genieaudio_16108705_.192k.mp3.flac
raw FLAC
251.122000
55480793
./backupgenieaudio_16108705_test1.192k.mp3
MP2/3 (MPEG audio layer 2/3)
251.928000
6046272
./genieaudio_16108705_test1.192k.mp3
MP2/3 (MPEG audio layer 2/3)
251.928000
6046893
./genieaudio_16108705_test2.192k.mp3
MP2/3 (MPEG audio layer 2/3)
251.928000
6046848
./genieaudio_16254360_192_b.mp3
MP2/3 (MPEG audio layer 2/3)
255.111837
6123354
./genieaudio_16268888_.192k.mp3.flac
raw FLAC
259.442979
55115022

最新更新