محمود-عادل / audio-waveform
使用 SoX 的 PHP 音频波形生成器
Requires
- php: >=5.6.0
- ext-gd: *
This package is auto-updated.
Last update: 2024-09-13 17:14:30 UTC
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