Music

如何檢測 WAV 文件中的真實樣本大小和通道數?

  • April 29, 2020

我在 WAV 文件中遇到了這個奇妙的難題,而我無法檢測到它的實際樣本大小(即樣本中有多少位)和通道數。

geek@liv-inspiron:~$ soxi file.wav

Input File     : 'file.wav'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:03:19.56 = 8800596 samples = 14967 CDDA sectors
File Size      : 35.2M
Bit Rate       : 1.41M
Sample Encoding: 16-bit Signed Integer PCM

MPlayer2 報告以下內容(但我只能聽到噪音):

geek@liv-inspiron:~$ mplayer file.wav 
MPlayer2 2.0-701-gd4c5b7f-2ubuntu2 (C) 2000-2012 MPlayer Team

Playing file.wav.
Detected file format: WAV / WAVE (Waveform Audio) (libavformat)
[wav @ 0x7f21516c9600]max_analyze_duration reached
[lavf] stream 0: audio (pcm_s16le), -aid 0
Load subtitles in .
Selected audio codec: Uncompressed PCM [pcm]
AUDIO: 44100 Hz, 2 ch, s16le, 1411.2 kbit/100.00% (ratio: 176400->176400)
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...

MPlayer 輸出實際聲音,並且似乎檢測到 DTS 格式:

geek@liv-inspiron:~$ mplayer file.wav 
MPlayer 1.1-4.8 (C) 2000-2012 MPlayer Team

Playing file.wav.
libavformat version 54.20.3 (external)
Audio only file format detected.
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 54.35.0 (external)
AUDIO: 44100 Hz, 2 ch, floatle, 1411.2 kbit/50.00% (ratio: 176400->352800)
Selected audio codec: [ffdca] afm: ffmpeg (FFmpeg DTS)
==========================================================================
AO: [pulse] 44100Hz 2ch floatle (4 bytes per sample)
Video: no video
Starting playback...

如果我使用也輸出實際聲音的 VLC 播放它,它會報告:

Type: Audio
Codec: DTS Audio (dts )
Channels: 3F2R/LFE
Sample rate: 44100 Hz
Bitrate: 1411 kb/s

一些快速數學得出 1411 ∕ 44.1 ≈ 31.995465,這意味著 32 位樣本大小。那麼它是哪一個:16 位還是 32 位?還是每個通道 16 位?

它有多少個頻道?2 是立體聲還是 5 是 DTS?資訊又矛盾了……

換句話說,有沒有一種工具可以準確地報告 WAV 文件的技術數據,而不會被錯誤的標題所迷惑?

正如在這個問題中所指出的那樣,MediaInfo是這個任務的一個很好的實用程序。

MediaInfo 是影片和音頻文件最相關的技術和標籤數據的方便統一顯示。

geek@liv-inspiron:~$ mediainfo file.wav 
General
Complete name                            : file.wav
Format                                   : Wave
File size                                : 33.6 MiB
Duration                                 : 3mn 19s
Overall bit rate mode                    : Constant
Overall bit rate                         : 1 411 Kbps

Audio
Format                                   : DTS
Format/Info                              : Digital Theater Systems
Mode                                     : 14
Format settings, Endianness              : Little
Codec ID                                 : 1
Duration                                 : 3mn 19s
Bit rate mode                            : Constant
Bit rate                                 : 1 411.2 Kbps
Channel(s)                               : 6 channels
Channel positions                        : Front: L C R, Side: L R, LFE
Sampling rate                            : 44.1 KHz
Bit depth                                : 24 bits
Compression mode                         : Lossy
Stream size                              : 33.6 MiB (100%)

這將確認特定文件是具有 6 個通道的 DTS,但有趣的是樣本大小實際上是 24 位,而且奇怪的是壓縮模式是有損的。

也可以通過 GUI 使用此實用程序:mediainfo-gui.

引用自:https://unix.stackexchange.com/questions/175316