我可以使用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
中的AAC
和FLAC
:
假设文件名的名称中不包含等号(
"="
(。如果是,则相应地调整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