Dou*_*ris 15 audio linux mp3 command-line macos
我正在寻找等效于 ImageMagick 的识别命令的音频文件。
例如,使用identify,我可以获得有关一堆图像的简要信息:
% identify b*
banner1.jpg JPEG 134x614 134x614+0+0 8-bit DirectClass 38.4kb
banner.jpg[1] JPEG 772x307 772x307+0+0 8-bit DirectClass 37.5kb
bg2.jpg[2] JPEG 103x1500 103x1500+0+0 8-bit DirectClass 43kb
bg_control_nav.png[3] PNG 13x39 13x39+0+0 8-bit DirectClass 1.73kb
bg_direction_nav.png[4] PNG 104x52 104x52+0+0 8-bit DirectClass 3.3kb
Run Code Online (Sandbox Code Playgroud)
我想获得有关我的音频文件的类似信息。
我的最终目标是创建一个脚本来遍历我的整个 mp3 库并识别那些以较低比特率翻录的内容,然后使用该数据重新翻录我的 CD(或从亚马逊或 iTunes 购买质量更好的版本)。
OS X/Linux 解决方案优于 Windows 解决方案
Lri*_*Lri 11
在 OS X 上,您可能只使用mdls或mdfind。
$ mdls 01\ Kindred.mp3
kMDItemAlbum = "Kindred EP"
kMDItemAudioBitRate = 320000
kMDItemAudioChannelCount = 2
kMDItemAudioSampleRate = 44100
kMDItemAudioTrackNumber = 1
kMDItemAuthors = (
Burial
)
kMDItemComment = "HDB059"
kMDItemContentCreationDate = 2012-03-19 21:20:59 +0000
kMDItemContentModificationDate = 2012-06-04 16:07:09 +0000
kMDItemContentType = "public.mp3"
kMDItemContentTypeTree = (
"public.mp3",
"public.audio",
"public.audiovisual-content",
"public.data",
"public.item",
"public.content"
)
kMDItemDateAdded = 2012-04-02 19:49:07 +0000
kMDItemDisplayName = "01 Kindred.mp3"
kMDItemDurationSeconds = 686.08
kMDItemFSContentChangeDate = 2012-06-04 16:07:09 +0000
kMDItemFSCreationDate = 2012-03-19 21:20:59 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = 0
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = 0
kMDItemFSLabel = 0
kMDItemFSName = "01 Kindred.mp3"
kMDItemFSNodeCount = 27457838
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 27457838
kMDItemFSTypeCode = ""
kMDItemKind = "MP3 audio"
kMDItemLogicalSize = 27457838
kMDItemMediaTypes = (
Sound
)
kMDItemMusicalGenre = "Dubstep"
kMDItemPhysicalSize = 27459584
kMDItemRecordingYear = 2012
kMDItemTitle = "Kindred"
kMDItemTotalBitRate = 320000
Run Code Online (Sandbox Code Playgroud)
mdfind -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'
为了便于解析输出,请尝试ffprobe -show_format 2>/dev/null使用 FFmpeg。
在OS X上,可以通过安装自制通过brew install ffmpeg。
$ ffprobe *.mp3 -show_format 2>/dev/null [格式] 文件名=02。萨尔瓦多·达利.mp3 nb_streams=2 格式名称=mp3 format_long_name=MPEG 音频层 2/3 开始时间=0.000000 持续时间=300.254667 大小=7206112 比特率=191999 标签:title=萨尔瓦多·达利 标签:艺术家=塞拉 标签:轨道=2/10 标签:专辑=大理 标签:日期=2005 标签:流派=哥特摇滚 标签:replaygain_album_peak=1.188815 标签:replaygain_track_peak=1.178607 标签:replaygain_track_gain=-9.00 dB 标签:replaygain_album_gain=-9.12 dB 标签:album_artist=Siela [/格式]
在脚本中:
find -iname '*.mp3' | while read -r file; do
bitrate=$(ffprobe "$file" -show_format 2>/dev/null |
awk -F"=" '$1 == "bit_rate" {print $2}')
if (( bitrate <= 128000 )); then
echo "[$bitrate] $file"
fi
done
Run Code Online (Sandbox Code Playgroud)
编辑:刚刚找到一个 Linux 程序
在 Linux 下,mp3info:
mp3info -p "%Q %L %v %o %r" test.mp3
output:
48000 III 1.000000 joint stereo
Run Code Online (Sandbox Code Playgroud)
我知道你想要一个 Linux 解决方案;但是,按照您提出问题的方式,听起来 Windows 解决方案还没有完全消失......
在 Windows 下,tag.exe将完成这项工作。
例子:
C:\mp3>tag.exe "test.mp3"
Tag - Automatic Tag from filename
Copyright (c) 2002-2003 Case. Minor additions by Neil Popham, 2004-2007
Version 2.0.52, Compiled 2007-05-04
C:\dl\test.mp3
Format: MPEG 1 Layer 3, Joint Stereo
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
Tag: ID3v2
Run Code Online (Sandbox Code Playgroud)
要获得比特率:
C:\mp3>tag.exe "test.mp3" 2>&1 | findstr /i "Details:"
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
Run Code Online (Sandbox Code Playgroud)
一个非常简单的实用程序是sox
Mine 预先安装在 linux 系统上。
soxi auidofile.wav
Run Code Online (Sandbox Code Playgroud)
输出 :
Input File : 'Yvette_Audin_F_70_7e.wav154.wav'
Channels : 2
Sample Rate : 44100
Precision : 24-bit
Duration : 00:00:10.01 = 441254 samples = 750.432 CDDA sectors
File Size : 2.65M
Bit Rate : 2.12M
Sample Encoding: 24-bit Signed Integer PCM
Run Code Online (Sandbox Code Playgroud)
对此非常有用的是它允许我将立体声 2 声道转换为单声道。我需要它来训练音频文件的机器学习模型。
编辑:将2 声道音频转换为单声道信号的更简单方法:
from pydub import AudioSegment
song = AudioSegment.from_wav("01.wav")
song = song.set_channels(1)
song.export("01.wav", format='wav')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21940 次 |
| 最近记录: |