เครื่องมือบรรทัดคำสั่งเพื่อระบุรายละเอียดไฟล์เสียง


12

ฉันกำลังมองหาไฟล์เสียงที่เทียบเท่ากับคำสั่งระบุของ 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 

ฉันต้องการรับข้อมูลที่คล้ายกันเกี่ยวกับไฟล์เสียงของฉัน

เป้าหมายในที่สุดของฉันคือการสร้างสคริปต์เพื่อเข้าไปในห้องสมุด mp3 ทั้งหมดของฉันและระบุผู้ที่ริปที่บิตเรตที่ต่ำกว่าจากนั้นใช้ข้อมูลนั้นเพื่อคัดลอกซีดีของฉันอีกครั้ง (หรือซื้อเวอร์ชั่นที่มีคุณภาพดีกว่าจาก Amazon หรือ iTunes)

โซลูชันสำหรับ OS X / Linux ที่เป็นที่นิยมสำหรับโซลูชัน Windows


และอีกอันหนึ่ง: MediaInfo
slhck

Mediainfoยอดเยี่ยมและมีอินเตอร์เฟสบรรทัดคำสั่ง
Marc.2377

น่าสนใจ แต่แอพ GUI ไม่ทำงานสำหรับความต้องการนี้
Doug Harris

คำตอบ:


10

ใน OS X คุณก็อาจจะใช้หรือmdlsmdfind

$ 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'


2
upvotes สำหรับคำตอบทั้งหมด แต่สิ่งนี้ได้รับเครื่องหมายถูกเนื่องจาก (a) เป็นของ OS X และ (b) ใช้ข้อมูล metadata ที่มีอยู่และคำสั่ง mdfind นั้นเร็วมาก
Doug Harris

รวมทั้งการผลิตและรายชื่ออัลบั้มกับอัตราบิตถึงขนาดนี้:mdfind -0 -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'| xargs -0 mdls -name kMDItemAlbum | sort | uniq
ดั๊กแฮร์ริส

8

สำหรับการแยกวิเคราะห์เอาต์พุตที่ง่ายลองffprobe -show_format 2>/dev/nullจาก FFmpeg

ใน OS X คุณสามารถติดตั้งมันผ่านHomebrewbrew install ffmpegผ่าน

$ ffprobe * .mp3 -show_format 2> / dev / null
[รูปแบบ]
ชื่อไฟล์ = 02 Salvadoro Dali.mp3
nb_streams = 2
format_name = mp3
format_long_name = ชั้นเสียง MPEG 2/3
start_time = 0.000000
ระยะเวลา = 300.254667
size = 7206112
bit_rate = 191999
แท็ก: ชื่อ = ซัลวาดอร์ดาลีต้า
TAG: ศิลปิน = Siela
TAG: ติดตาม = 2/10
TAG: อัลบั้ม = ต้าหลี่
TAG: วัน = 2005
แท็ก: ประเภท = โกธิคร็อค
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
[/รูปแบบ]

ในสคริปต์:

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

5

แก้ไข: เพิ่งพบโปรแกรม 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

4

ยูทิลิตี้ที่ง่ายมากคือsox
Mine ได้รับการติดตั้งไว้ล่วงหน้าในระบบ 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')

จัดการไฟล์ได้ทุกประเภท แต่ไม่ใช่ MP3 !
not2qubit

.mp3 สามารถแปลงเป็น. wav ได้อย่างง่ายดายโดยใช้ตัวแปลงออนไลน์ matlab อาจมีห้องสมุดที่จะทำเช่นนั้น หรือหน้าต่างของคุณมีตัวแปลงเสียงเหมือนกัน อาจเป็นรูปแบบของโรงงาน ...
Priyank Pathak

ใช่ แต่นั่นไม่ใช่สิ่งที่ OP ร้องขอ
not2qubit

เป็นไปได้จะออกจากที่นี่เพื่อขอความช่วยเหลือในอนาคต
Priyank Pathak

1

mp3infoได้รับการพัฒนาภายใต้ Linux แต่ควรทำงานกับรุ่น UN * X ส่วนใหญ่ ... MP3Info สามารถแสดงด้านเทคนิคต่าง ๆ ของไฟล์ MP3 รวมถึงเวลาเล่นอัตราบิตความถี่การสุ่มตัวอย่างและคุณลักษณะอื่น ๆ ในรูปแบบเอาต์พุตที่กำหนดไว้ล่วงหน้าหรือที่ผู้ใช้กำหนด

หรือ

MP3 :: Info - จัดการ / ดึงข้อมูลจากไฟล์เสียง MP3

บางที

  perl -MMP3::Info \
       -e 'print ($_, ": ",MP3::Info->new($_)->bitrate, "\n") for (@ARGV)' *.mp3

(ทดสอบ)


1

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.