генератор — Попытка нарисовать форму волны с помощью PHP и afreiday / php-waveform-png

У меня есть проигрыватель сигналов, но я использую вспышку для генерации сигналов PNG, которые даже не точны, поэтому я решил использовать PHP и установил LAME Encoder на CentOS 6.4. Я нашел этот скрипт на GitHubafreiday / PHP-сигнал-PNGи работает, основываясь на загружаемом файле, вы получаете форму аудиотрека. Единственная проблема в том, что это «пик». Пример:
пример скрипта от github

Как вы можете видеть в примере (дорожка EDM с поющей частью и жестким хлопком bassdrop), это просто не очень полезно, вы не можете прокрутить до перерыва, потому что вы не можете видеть, где он находится. Если вы внимательно не посмотрите на очень красную область в середине. Так что я знаю, что он там, и сценарий работает, но, как я уже говорил, он просто «пиковый» и случайный.

То, что я хочу, это что-то вроде рисунка ниже, где вы можете видеть различные части трека (взяты из zippyshare с тем же аудиофайлом:
что я хочу

Часть кода, где она рисует линии отдельно, выглядит так:

$v = (int) ($data / 255 * $height);
if (!($v / $height == 0.5 && !$draw_flat))

// draw the line on the image using the $v value and centering it vertically on the canvas
imageline(
$img,
// x1
(int) ($data_point / DETAIL),
// y1: height of the image minus $v as a percentage of the height for the wave amplitude
$height * $wav - $v,
// x2
(int) ($data_point / DETAIL),
// y2: same as y1, but from the bottom of the image
$height * $wav - ($height - $v),
imagecolorallocate($img, $r, $g, $b)
);

Где $ v — объем
Теперь я попытался добавить что-то, чтобы избавиться от пиков, но это не сработало:

if(isset($previous)) {
$diff = abs($v-$previous);
$perc = $diff / $v * 100;
if($perc>40) {
$v = $previous;
}
}

Конечно, это не помогло, но я подумал, что мне есть над чем поработать, но это не так. У кого-нибудь возникла идея, как решить эту проблему или был подобный опыт?

Если альтернатива этому сценарию лучше, дайте мне знать. Не могу понять это.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]