codememory/wave-fork

该软件包最新版本(v1.0)没有提供许可证信息。

一个用于读取WAV数据的PHP软件包

维护者

详细信息

github.com/codememory1/Wave

源代码

安装: 297

依赖: 1

建议: 0

安全: 0

星标: 0

关注者: 0

分支: 13

v1.0 2022-06-17 21:05 UTC

This package is auto-updated.

Last update: 2024-08-30 01:14:54 UTC


README

该软件包可以查看波形文件的元数据。它还可以读取数据块并将它们分离成多个通道。每个通道都有其自己的幅度值。如果您想渲染波形图(例如),这将很有用。

如何安装

您可以使用composer安装。使用以下行的composer.json文件

"minimum-stability": "dev",
"require": {
    "boyhagemann/wave": "dev-master"
}

如何使用

首先,让我们基于一个波形文件创建一个波形对象

<?php

use BoyHagemann\Wave\Wave;

$wave = new Wave();
$wave->setFilename('path/to/your/file.wav');

之后,如果文件确实是一个有效的波形文件,您可以从它那里获取几个元数据。

波形是如何制作的

波形文件由数据块组成;数据包。每个块都有自己的名称、大小和独特的数据。我们实际上只对两种类型的块感兴趣:Fmt和数据块。

元数据(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();

数据块

这个块包含所有实际的波形数据。它由多个字节的包组成,具体取决于波形有多少通道。所有分析的数据都存储在单独的通道中,具体取决于文件中的通道数。要获取文件的原始幅度,请执行以下操作

// 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);