2016-05-05 38 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和輸出文件是否正常。