ImageMagickの identify コマンドに相当するオーディオファイルを探しています。
たとえば、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
オーディオファイルに関する同様の情報を取得したいと考えています。
私の最終的な目標は、mp3ライブラリ全体を調べ、低いビットレートでリッピングされたものを特定し、そのデータを使用してCDを再度リッピングする(または、AmazonまたはiTunesからより高品質のバージョンを購入する)スクリプトを作成することです。
WindowsソリューションよりもOS X/Linuxのソリューションを推奨
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
mdfind -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'
出力を簡単に解析するには、FFmpegのffprobe -show_format 2>/dev/null
を試してください。
OS Xでは、brew install ffmpeg
を介して Homebrew からインストールできます。
$ ffprobe * .mp3 -show_format 2>/dev/null [FORMAT] filename = 02。 Salvadoro Dali.mp3 nb_streams = 2 format_name = mp3 format_long_name = MPEGオーディオレイヤー2/3 start_time = 0.000000 duration = 300.254667 size = 7206112 bit_rate = 191999 TAG:title = Salvadoro Dali TAG:artist = Siela TAG:track = 2/10 TAG:album = Dali TAG:date = 2005 TAG:genre = Gothic rock TAG:replaygain_album_peak = 1.188815 TAG:replaygain_track_peak = 1.178607 TAG:replaygain_track_gain = -9.00 dB TAG:replaygain_album_gain = -9.12 dB TAG:album_artist = Siela [/ FORMAT]
スクリプトで:
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
編集:Linuxプログラムが見つかりました
Linuxでは mp3info :
mp3info -p "%Q %L %v %o %r" test.mp3
output:
48000 III 1.000000 joint stereo
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
ビットレートを取得するには:
C:\mp3>tag.exe "test.mp3" 2>&1 | findstr /i "Details:"
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
非常にシンプルなユーティリティは sox です。
鉱山はLinuxシステムに事前にインストールされていました。
soxi auidofile.wav
出力:
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
これについて非常に便利なのは、ステレオ2チャンネルをモノチャンネルに変換できることでした。オーディオファイルの機械学習モデルをトレーニングするために必要でした。
編集:2チャネルオーディオをモノラル信号に変換する簡単な方法:
from pydub import AudioSegment
song = AudioSegment.from_wav("01.wav")
song = song.set_channels(1)
song.export("01.wav", format='wav')
mp3info はLinuxで開発されましたが、ほとんどのUN * Xバリアントで動作するはずです。 ... MP3Infoは、再生時間、ビットレート、サンプリング周波数、およびその他の属性を含む、MP3ファイルのさまざまな技術的側面を、事前定義またはユーザー指定可能な出力形式で表示することもできます。
または
MP3 :: Info -MP3オーディオファイルから情報を操作/フェッチ
たぶん
Perl -MMP3::Info \
-e 'print ($_, ": ",MP3::Info->new($_)->bitrate, "\n") for (@ARGV)' *.mp3
(未試験)
ffprobe は友達です(avconv、mplayerを使用することもできます。それらすべてがメディア情報を返しますが、ffprobeは必要な情報を返します)
ストリームあり:
ffprobe http://96.127.183.74:8604/live
戻り値
...
Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 31 kb/s
ローカルファイル:
ffprobe some_file.mp3
戻り値
...
encoder : LAME 64bits version 3.99.5
...
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s