boyhagemann/waveform

此包最新版本(dev-master)没有可用的许可信息。

一个基于WAV文件生成波形图的PHP包

dev-master / 0.1.x-dev 2016-11-23 12:09 UTC

This package is not auto-updated.

Last update: 2024-09-22 07:11:10 UTC


README

此包基于BoyHagemann\Wave类创建波形图。它将具有几个生成器来展示波形图。

An example of a generated waveform

安装

您可以使用以下行在composer.json文件中安装它

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

如何使用

生成波形图的最基本方法是这样的。默认宽度为500像素,高度为200像素。

<?php

use BoyHagemann\Waveform\Waveform;

echo Waveform::fromFilename('the/path/to/the/file.wav');

生成器

波形图可以通过多种方式展示

  • HTML
  • PNG
  • SVG

它使用简单的接口,因此您可以构建自己的生成器。GeneratorInterface接口使用三个简单的方法

<?php

namespace BoyHagemann\Waveform\Generator;

use BoyHagemann\Waveform\Waveform;

interface GeneratorInterface
{
    public function setWaveform(Waveform $waveform);
    public function getWaveform();
    public function generate();
}

示例

如果您想亲自测试,请尝试以下代码。

生成PNG图像

<?php

use BoyHagemann\Waveform\Waveform;
use BoyHagemann\Waveform\Generator;

$filename = 'the/path/to/your/file.wav';

$waveform =  Waveform::fromFilename($filename);
$waveform->setGenerator(new Generator\Png)
         ->setWidth(960)
         ->setHeight(400);

// Will display the image, including setting the read image/png header
echo $waveform->generate();

生成基于HTML/CSS的波形图

<?php

use BoyHagemann\Waveform\Waveform;

$filename = 'the/path/to/your/file.wav';

$waveform =  Waveform::fromFilename($filename);
$waveform->setGenerator(new Generator\Html)
         ->setWidth(960)
         ->setHeight(400);

$waveformHtml = $waveform->generate();

?>

<html>
    <head>        
        <style>

        #waveform {
            float: left;            
            position: relative;
            height: 400px;
            width: 960px;
        }
        span {
            position: absolute;
            display: block;
            width: 1px;
            background: #ddd;
            float: left;
            bottom: 0;
        }

        </style>
    </head>
    <body>        
        
        <div id="waveform">
            <?php echo $waveformHtml ?>
        </div>
        
    </body>
</html>

生成基于SVG的波形图

<?php

use BoyHagemann\Waveform\Waveform;

$filename = 'the/path/to/your/file.wav';

$waveform =  Waveform::fromFilename($filename);

$waveform->setGenerator(new Generator\Svg)

$waveformSvg = $waveform->generate();

\\do something, e.g. save it to a file
file_put_contents ('the/path/to/result/file.svg', $waveformSvg);

最大化

默认情况下,波形振幅数据将最大化以匹配您为波形设置的高度。这意味着如果您设置高度为200,则波形图将最大化到200像素。无论整体音量如何,结果都是一个看起来很好的波形图。不想使用这个实用的功能?您可以通过一行简单的代码更改行为

$waveform->setMaximized(false); // defaults to true

获取波形元数据

您有权访问所有波形元数据。您唯一需要做的是检索原始Wave对象并获取所需信息。更多详细信息请参阅BoyHagemann\Wave文档

$wave = $waveform->getWave();
$metadata = $wave->getMetadata();
$metadata->getSampleRate();
$metadata->getBitsPerSample();

待办事项

  • 添加PNG生成器
  • 添加SVG生成器
  • 允许不同的样本位(8, 16, 24, 32)