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

如何检测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

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 个还是 DTS 中的 5 个?信息又矛盾了……

换句话说,是否有一种工具可以准确报告 WAV 文件的技术数据,而不会被错误的标头所困扰?

答案1

正如指出的这个问题,此任务的一个出色实用程序是媒体信息

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

答案2

看起来像 dts-wav。其中许多文件都有一个标头格式 ID,表明是 PCM,但实际的字节流是 DTS。这解释了 soxi 输出。

如果您安装了最新版本(2007 或更高版本)的 ffmpeg/libavcodec,mplayer 应该能够检测到并使用适当的非 PCM 编解码器。

VLC 输出意味着您拥有 5.1 配置(6 通道)的 DTS。

答案3

对于一个有用的在线拖放式“免费在线 EXIF 查看器”,它可以为您提供您想要的所有数据,请尝试

https://www.get-metadata.com/

更新

网站的 URL 已更改,但功能相同。

https://www.metadata2go.com/

如果您想了解可以从该网站获得什么的详细信息,请查看这个答案在超级用户上。

相关内容