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

Niy*_*yaz 0 php audio mp3

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

随着下面

如何在php中检测一首歌的BPM

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

LSe*_*rni 5

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

如果你想要双倍的速度,你需要在一半的时间内将波浪压在一起,但是然后将它们设置回原始宽度,你需要将其中的一半放下(一对一).这个操作不能(很容易)在PHP中完成.

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

FFmpeg有一个内置的音频滤波器,可以在不改变音高的情况下改变速度.我们需要将文件编码为手机播放的某种格式.这当然取决于手机.许多现代智能手机,如AAC音频:

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100
Run Code Online (Sandbox Code Playgroud)

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");
Run Code Online (Sandbox Code Playgroud)

并检查$results输出文件是否正常.