如何使用PHP更改音频文件的节奏


How to change the tempo of an audio file using PHP?

有没有任何可能的方法可以使用PHP设置音频文件的节奏?

使用以下

如何在php中检测歌曲的BPM

我们可以检测bpm(getbpm),但我找不到为音频mp3文件设置节奏的方法。

不能简单地设置音频文件的节奏。如果你提高它的播放速度,同样数量的声波峰值会在更短的时间内被填满;它们被挤压在一起,波长必须减小,这意味着频率成比例地增加,正如Niyaz和其他人所观察到的,你会听到更高的"音高"。

如果你想要双倍的速度,你需要在一半的时间内将波浪挤压在一起,但要将它们恢复到原来的宽度,你需要减少一半(二分之一)在PHP中无法(轻松)完成此操作

例如,您可以使用SoX或ffmpeg(强调矿):

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

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

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

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

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

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

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

您可能需要在代码中放入以下脚本:

    <script>
        var audio = document.querySelector('audio');
        audio.addEventListener('loadedmetadata', function() {
            audio.playbackRate = 2;
        });
    </script>