Skip to main content

getWaveformPortion()

@remotion/media-utils 包中的辅助函数之一。

接受庞大的波形数据(例如通过 getAudioData() 获取)并返回修剪和简化版本,以便更简单地进行可视化。如果您只需要音量数据,则此函数适用;如果您需要有关每个频率范围的更详细数据,请使用 visualizeAudio()

参数

具有以下参数的对象:

audioData

AudioData

有关音频的信息。使用 getAudioData() 进行获取。

startTimeInSeconds

number

将波形修剪以排除 startTimeInSeconds 之前的所有数据。

durationInSeconds

number

将波形修剪以排除 startTimeInSeconds + durationInSeconds 之后的所有数据。

numberOfSamples

number

您希望结果数组有多大。该函数将压缩波形以适应 numberOfSamples 个数据点。

返回值

Bar[] - 一个具有以下属性的对象数组:

index

number

数据点的索引,从 0 开始。可用于指定为 React key 属性而不会收到警告。

amplitude

number

描述音频振幅 / 音量 / 响度的值。值范围在 0 到 1 之间。

示例

tsx
import { getAudioData, getWaveformPortion } from "@remotion/media-utils";
import { staticFile } from "remotion";
 
const audioData = await getAudioData(staticFile("music.mp3")); /* {
channelWaveforms: [Float32Array(4410000), Float32Array(4410000)],
sampleRate: 44100,
durationInSeconds: 100.0000,
numberOfChannels: 2,
resultId: "0.432878981",
isRemote: false
} */
 
const waveformPortion = await getWaveformPortion({
audioData,
// Will select time range of 20-40 seconds
startTimeInSeconds: 20,
durationInSeconds: 20,
numberOfSamples: 10,
}); // [{index: 0, amplitude: 0.14}, ... {index: 9, amplitude: 0.79}]
 
console.log(waveformPortion.length); // 10
tsx
import { getAudioData, getWaveformPortion } from "@remotion/media-utils";
import { staticFile } from "remotion";
 
const audioData = await getAudioData(staticFile("music.mp3")); /* {
channelWaveforms: [Float32Array(4410000), Float32Array(4410000)],
sampleRate: 44100,
durationInSeconds: 100.0000,
numberOfChannels: 2,
resultId: "0.432878981",
isRemote: false
} */
 
const waveformPortion = await getWaveformPortion({
audioData,
// Will select time range of 20-40 seconds
startTimeInSeconds: 20,
durationInSeconds: 20,
numberOfSamples: 10,
}); // [{index: 0, amplitude: 0.14}, ... {index: 9, amplitude: 0.79}]
 
console.log(waveformPortion.length); // 10

替代方案

visualizeAudio() 函数更适合基于音频的频率属性(低音、中音、高音等)进行可视化。

参见