maximal / audio-waveform
基于PHP和SoX的音频波形生成器
1.2.1
2019-02-14 15:13 UTC
Requires
- php: >=5.6.0
- ext-gd: *
README
安装
安装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);
立体声源
单声道源
设置
所有设置都是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文件浏览器缩略图生成器
-
将包安装到某个目录。例如:
/opt/maximal/audio-waveform-php -
将以下代码放置在文件
/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实用程序支持。 -
清除缩略图缓存并重新启动Nautilus
rm -rf ~/.thumbnails nautilus -q -
从那时起,所有指定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);
联系作者
- 网站:https://maximals.ru(俄语)
- Sijeko公司:https://sijeko.ru(网页、移动和桌面应用程序开发以及平面设计)
- 个人GitHub:https://github.com/maximal
- 公司GitHub:https://github.com/sijeko


