Công cụ dòng lệnh để xác định thông số kỹ thuật tập tin âm thanh


12

Tôi đang tìm một tệp âm thanh tương đương với lệnh nhận dạng của ImageMagick .

Ví dụ, với identify, tôi có thể nhận được thông tin ngắn gọn về một loạt các hình ảnh:

% 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 

Tôi muốn nhận thông tin tương tự về các tập tin âm thanh của tôi.

Mục tiêu cuối cùng của tôi là tạo ra một tập lệnh đi qua toàn bộ thư viện mp3 của tôi và xác định những đoạn được trích xuất ở tốc độ bit thấp hơn và sau đó sử dụng dữ liệu đó để trích xuất lại đĩa CD của tôi (hoặc mua phiên bản chất lượng tốt hơn từ Amazon hoặc iTunes).

Giải pháp cho OS X / Linux được ưu tiên cho các giải pháp Windows


Và một số khác: MediaInfo
slhck

Mediainfo rất tuyệt và có giao diện dòng lệnh.
Marc.2377

Thú vị nhưng một ứng dụng GUI không hoạt động cho nhu cầu này.
Doug Harris

Câu trả lời:


10

Trên OS X, bạn có thể sử dụng mdlshoặc 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'


2
Cho đến nay tất cả các câu trả lời, nhưng câu trả lời này được đánh dấu vì (a) nó có nguồn gốc từ OS X và (b) sử dụng thông tin siêu dữ liệu nổi bật hiện có và lệnh mdfind rất nhanh.
Doug Harris

Kết hợp cả hai và tạo ra một danh sách các tên album với tốc độ bit không đạt tiêu chuẩn:mdfind -0 -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'| xargs -0 mdls -name kMDItemAlbum | sort | uniq
Doug Harris

8

Để dễ phân tích đầu ra, hãy thử ffprobe -show_format 2>/dev/nulltừ FFmpeg.

Trên OS X, bạn có thể cài đặt nó thông qua Homebrew thông qua brew install ffmpeg.

$ ffprobe * .mp3 -show_format 2> / dev / null
[ĐỊNH DẠNG]
tên tệp = 02. Salvador Dali.mp3
nb_streams = 2
format_name = mp3
format_long_name = Lớp âm thanh MPEG 2/3
start_time = 0,000000
thời lượng = 300.254667
kích thước = 7206112
bit_rate = 191999
TAG: tiêu đề = Salvador Dali
TAG: nghệ sĩ = Siela
TAG: theo dõi = 2/10
TAG: album = Đại Lý
TAG: ngày = 2005
TAG: thể loại = Đá gothic
TAG: replaygain_album_peak = 1.188815
TAG: phát lại_track_peak = 1.178607
TAG: phát lại_track_gain = -9,00 dB
TAG: phát lại_album_gain = -9,12 dB
TAG: album_artist = Siela
[/ĐỊNH DẠNG]

Trong một kịch bản:

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

EDIT: vừa tìm thấy một chương trình Linux

Trong Linux, mp3info :

mp3info -p "%Q %L %v %o %r" test.mp3
output:
48000 III 1.000000 joint stereo

Tôi biết bạn muốn một giải pháp Linux; tuy nhiên, bằng cách bạn nêu câu hỏi của mình, có vẻ như một giải pháp Windows không hoàn toàn ...

Trong Windows, tag.exe sẽ thực hiện công việc.

Thí dụ:

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

Để chỉ nhận bitrate:

C:\mp3>tag.exe "test.mp3" 2>&1 | findstr /i "Details:"
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24

4

Một tiện ích rất đơn giản là sox
Mine đã được cài đặt sẵn trên hệ thống linux.

 soxi auidofile.wav 

Đầu ra:

 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

một cái gì đó rất hữu ích về điều này là nó cho phép tôi chuyển đổi kênh âm thanh nổi 2 kênh thành kênh đơn âm. Tôi cần nó để đào tạo một mô hình học máy cho các tệp âm thanh.

EDIT: Phương pháp dễ dàng hơn để chuyển đổi âm thanh 2 kênh thành tín hiệu đơn âm :

 from pydub import AudioSegment  
 song = AudioSegment.from_wav("01.wav")
 song = song.set_channels(1)
 song.export("01.wav", format='wav')

Xử lý tất cả các loại tập tin nhưng không mp3 !
not2qubit

.mp3 có thể dễ dàng chuyển đổi thành .wav, sử dụng các trình chuyển đổi trực tuyến. Có lẽ matlab có một số thư viện để làm như vậy. Hoặc cửa sổ của bạn có một bộ chuyển đổi âm thanh cho cùng. có thể định dạng nhà máy ...
Priyank Pathak

Vâng, nhưng đó không phải là những gì OP yêu cầu.
not2qubit

có thể sẽ rời khỏi đây để được giúp đỡ trong tương lai.
Priyank Pathak

1

mp3info được phát triển trên Linux, nhưng sẽ hoạt động trên hầu hết các biến thể UN * X. ... MP3Info cũng có thể hiển thị các khía cạnh công nghệ khác nhau của tệp MP3 bao gồm thời gian phát, tốc độ bit, tần số lấy mẫu và các thuộc tính khác ở định dạng đầu ra được xác định trước hoặc do người dùng xác định trước.

hoặc là

MP3 :: Thông tin - Thao tác / tìm nạp thông tin từ các tệp âm thanh MP3

Có lẽ

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

(chưa được kiểm tra)


1

ffprobe là bạn của bạn (bạn cũng có thể sử dụng avconv, mplayer; tất cả đều trả về thông tin phương tiện, nhưng ffprobe chỉ trả về thông tin bạn cần)

Với luồng:

ffprobe http://96.127.183.74:8604/live

Trả về

...
Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 31 kb/s

Với tệp cục bộ:

ffprobe some_file.mp3 

Trả về

...
encoder         : LAME 64bits version 3.99.5
...
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.