maximal/audio-waveform

基于PHP和SoX的音频波形生成器

1.2.1 2019-02-14 15:13 UTC

This package is auto-updated.

Last update: 2024-09-15 04:05:28 UTC


README

Example result

安装

安装SoX及其不同音频格式的处理器。您还需要一个提供imagecreatetruecolor()功能的GD模块或其他扩展。例如,在Ubuntu上

sudo apt install sox libsox-fmt-all
sudo apt install php-gd

使用以下Composer require命令安装此包

composer require maximal/audio-waveform '~1.0'

或在您的composer.json文件的require部分添加包名

"require": {
	"maximal/audio-waveform": "~1.0"
}

然后运行

composer update

使用

在您的PHP源代码中

// Include `maximal\audio` namespace
use maximal\audio\Waveform;

// Open an audio file `track.mp3`
$waveform = new Waveform('track.mp3');

// Save its waveform to the `thumbnail.png` image file which size is 1024×512 pixels
$success = $waveform->getWaveform('thumbnail.png', 1024, 512);

单相

要获取仅正波形(即单相),请将onePhase参数设置为true

$waveform->getWaveform('one-phase.png', 800, 400, true);

立体声源

One phase stereo

单声道源

One phase stereo

设置

所有设置都是Waveform类的公共静态成员

  • $linesPerPixel是水平轴上每个像素的行数。默认值为8
  • $samplesPerLine是每行的样本数。默认值为512
  • $color是每行的颜色。默认值为[95, 95, 95, 0.5],表示50%不透明的深灰色。
  • $backgroundColor是波形文件的背景颜色。默认值为[245, 245, 245, 1],表示100%不透明的浅灰色背景。
  • $axisColor是每个轴的颜色。默认值为[0, 0, 0, 0.15],表示15%不透明的黑色。

示例

带有半透明峰的红波形

$waveform = new Waveform('track.mp3');
Waveform::$color = [255, 0, 0, 0.5];
$success = $waveform->getWaveform('thumbnail.png', 1024, 512);

带红色波形和完全透明的背景

$waveform = new Waveform('track.mp3');
Waveform::$color = [255, 0, 0, 0.5];
Waveform::$backgroundColor = [0, 0, 0, 0];
$success = $waveform->getWaveform('thumbnail.png', 1024, 512);

Ubuntu Linux的Nautilus文件浏览器缩略图生成器

  1. 将包安装到某个目录。例如:/opt/maximal/audio-waveform-php

  2. 将以下代码放置在文件/usr/share/thumbnailers/waveform.thumbnailer

    [Thumbnailer Entry]
    Exec=/opt/maximal/audio-waveform-php/thumbnailer.php %i %o %sx%s
    MimeType=audio/wave;audio/x-wav;audio/mpeg;audio/ogg
    

    此存储库包含一个示例缩略图生成器文件。见:usr/share/thumbnailers/waveform.thumbnailer

    您还可以将其他MIME类型添加到您的缩略图生成器文件的MimeType部分,只要它们可以通过SoX实用程序支持。

  3. 清除缩略图缓存并重新启动Nautilus

    rm  -rf  ~/.thumbnails
    nautilus  -q
  4. 从那时起,所有指定MIME类型的音频文件都将使用Nautilus的缩略波形显示。默认情况下,它们是WAV、MP3和OGG文件。

与其他库集成(例如wavesurfer.js)

Waveform类有一个getWaveformData()方法,用于检索波形数据而不生成图像。您可以使用它来与其他库集成,例如与出色的wavesurfer.js

$waveform = new Waveform('track.mp3');
$width = 1024;
$data = $waveform->getWaveformData($width);
// $data['lines1'] and $data['lines2'] now have the waveform data for channels 1 and 2

要获取仅正值(即单相)请将onePhase参数设置为true

$data = $waveform->getWaveformData($width, true);

联系作者