如何检测WAV文件中的真实样本大小和通道数?

lan*_*oni 7 music wav

我对 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
Run Code Online (Sandbox Code Playgroud)

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...
Run Code Online (Sandbox Code Playgroud)

虽然 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...
Run Code Online (Sandbox Code Playgroud)

如果我使用也输出实际声音的 VLC 播放它,它会报告:

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

一些快速数学产生 1411 ?44.1 ? 31.995465,这意味着 32 位样本大小。那么它是哪一个:16 位还是 32 位?还是每通道 16 位?

它有多少个频道?立体声中的 2 还是 DTS 中的 5?信息又矛盾了……

换句话说,有没有一种工具可以准确报告 WAV 文件的技术数据,而不会被错误的标题混淆?

lan*_*oni 11

正如在这个问题中所指出的,这个任务的一个很好的工具是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%)
Run Code Online (Sandbox Code Playgroud)

这将确认特定文件是具有 6 个通道的 DTS,但有趣的是样本大小实际上是 24 位,奇怪的是压缩模式是有损的。

还可以通过 GUI 使用此实用程序:mediainfo-gui.