import { useAudioData, visualizeAudio } from "@remotion/media-utils"; import { AbsoluteFill, Audio, useCurrentFrame, useVideoConfig } from "remotion"; import { FPS, type AudiogramSquareProps } from "../schema"; import { theme } from "../theme"; import { Logo, ProgressBar } from "./shared"; import { Starfield } from "./Starfield"; const BARS = 48; export function audiogramDuration(props: AudiogramSquareProps): number { return Math.max(FPS, Math.round(props.durationS * FPS)); } function Waveform({ src, accent }: { src: string; accent: string }) { const frame = useCurrentFrame(); const { fps } = useVideoConfig(); const audio = useAudioData(src); const values = audio ? visualizeAudio({ fps, frame, audioData: audio, numberOfSamples: 64, smoothing: true }).slice(0, BARS) : Array.from({ length: BARS }, () => 0.02); return (
Audio overview
{speaker}
{current.text.length > 180 ? `${current.text.slice(0, 180)}...` : current.text}
> )}