fedoskin / wave
该软件包最新版本(0.0.3)没有提供许可证信息。
一个用于读取WAV数据的PHP软件包
0.0.3
2019-06-03 00:00 UTC
Requires
- php: >=5.3.3
This package is not auto-updated.
Last update: 2024-09-26 20:02:37 UTC
README
此软件包可以查看波形文件中的元数据。它还可以读取数据块并将其分离成多个通道。每个通道都有自己的振幅值。如果您想渲染波形图,例如,这将非常有用。
如何安装
您可以使用composer进行安装。使用以下行的composer.json文件
"minimum-stability": "dev", "require": { "fedoskin/wave": "dev-master" }
如何使用
首先,让我们基于一个波形文件创建一个波形对象
<?php use Fedoskin\Wave\Wave; $wave = new Wave(); $wave->setFilename('path/to/your/file.wav');
之后,如果文件是一个有效的波形文件,您可以从中获取几个元数据。
波形的制作
波形文件由数据块组成;数据包。每个数据块都有自己的名称、大小和独特的数据。我们实际上只对两种类型的数据块感兴趣:Fmt和Data数据块。
元数据(fmt数据块)
例如,“Fmt”数据块包含对波形文件内容的描述。要获取此元数据,您可以输入以下行
$metadata = $wave->analyze()->getMetadata(); $metadata->getName(); $metadata->getSize(); $metadata->getFormat(); $metadata->getChannels(); $metadata->getSampleRate(); $metadata->getBytesPerSecond(); $metadata->getBlockSize(); $metadata->getBitsPerSample(); $metadata->getExtensionSize(); $metadata->getExtensionData();
Data数据块
此数据块包含所有实际的波形数据。它由多个字节的数据包组成,取决于波形有多少个通道。所有分析的数据都存储在单独的通道中,取决于文件中的通道数。要获取文件的原始振幅,请执行以下操作
// Assuming we already analyzed the wave... $data = $wave->getWaveformData(); // Get the amplitude values for each channel foreach($data->getChannels() as $channel) { $amplitudes[] = $channel->getValues(); }
分析
分析过程可能非常耗时。通常,您会在数据块中扫描每个数据包。它可能会使用您所有的PHP处理能力,并可能导致最大执行时间错误。为了防止这种情况,您可以设置分析数据的详细程度。您可以为要分析的数据包之间的步数设置数量。步数越大,脚本运行越快。步数越小,波形图越准确。默认情况下,步数设置为100,但您可以轻松地更改此值
$wave->setSteps(10000);