2016-05-05 36 views

回答

2

最简单的方法是一行JavaScript。

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

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

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

+0

document.getElementById(“audio”)。playbackRate = playbackspeed这不会保持歌曲的音高。 –

+0

你无法保持歌曲的音调并加快速度,这是不可能的。加速声波或改变速度也会改变声波的频率。 – David

+0

所以没有办法用javascript来做到这一点,对吧?要试着从后端服务器做起,你能告诉我哪种编程语言是可跳跃的吗? –

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和输出文件是否正常。