如何使用PHP更改音频文件的速度?

时间:2016-05-05 12:34:22

标签: php audio mp3

有没有办法用PHP设置音频文件的速度?

使用以下

How to detect the BPM of a song in php

我们可以检测到bpm(获取bpm),但我找不到设置音频mp3文件速度的方法。

2 个答案:

答案 0 :(得分:5)

不只是设置音频文件的速度。如果你提高它的播放速度,相同数量的声波峰值会在更短的时间内被塞满;它们被压扁在一起,波长必须减小,这意味着频率成比例地增加,并且如Niyaz和其他观察到的那样,你会听到更高的音调"。

如果你想要双倍速度,你需要在一半的时间内将波浪挤压在一起,但是然后将它们设置回原始宽度,你需要将其中的一半放下(一对一)。 此操作无法(轻松)在PHP中完成

你可以这样做,例如使用SoX or ffmpeg(强调我的):

  

FFmpeg有一个内置的音频过滤器,用于不用改变速度   改变音高。我们需要将文件编码为某种格式   电话播放。这当然取决于手机。许多现代   像AAC音频这样的智能手机:

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100
     

final.m4a

你当然会使用.mp3,而不是wma或m4a作为输入和输出。

在PHP中,您只需调用ffmpeg:

$results = shell_exec("/path/to/wherever/is/ffmpeg -i '{$inputFile}' -filter:a 'atempo={$newTempo}' -q:a {$percentQuality} '{$outputFile}' 2>&1");

并检查$results以及输出文件是否正常。

答案 1 :(得分:2)

最简单的方法是使用一行JavaScript。

document.getElementById("audio").playbackRate=playbackspeed

如果您想使用php以较慢的速度处理视频/音频,可以使用ffmpeg。 https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video

请注意,如果您不拥有大量服务器,使用php处理视频/音频可能需要很长时间。