On Fri, Sep 1, 2023 at 4:40 PM <mira...@pulusound.fi> wrote: > hi, > > i have written a script[1] using ffmpeg 5.1.2 to generate scrolling > waveform videos from audio files. i first use showwavespic to write the > full waveform to an image file, the width of which depends on the > duration of the audio. i then use crop with a time-varying x coordinate > to scroll through the image. > > my problem is that the processing speed of the image-to-video step > appears to slow down significantly with longer audio files, i.e. wider > waveform images. for example, the second ffmpeg invocation on my machine > processes 10 seconds of audio at ~1x speed, but 5 minutes of audio at > only ~0.1x speed. > > why is this? i expected that after the waveform image is initially > loaded into memory, the time complexity of crop would depend only on the > width and height of the cropped area. is there a better way to achieve > this? > > best, > miranda > > > [1] > > #!/usr/bin/env bash > audio_file=$1 > xres=1080 > yres=1080 > downscale=64 > fps=60 > > num_secs=$(soxi -D "$audio_file") > num_samples=$(soxi -s "$audio_file") > img_xres=$((num_samples / downscale)) > img_yres="$yres" > img_file="$audio_file.bmp" > vid_file="$audio_file.mkv" > > # create an image of the full waveform > ffmpeg \ > -i "$audio_file" \ > -filter_complex > "[0:a]aformat=channel_layouts=mono,showwavespic=s=${img_xres}x${img_yres}:colors=white:draw=full,format=rgba,pad=$((img_xres > > + xres)):$yres:$xres:0:black@0.0" \ > -pix_fmt monob \ > -frames:v 1 \ > "$img_file" > > # create a video scrolling through the waveform > ffmpeg \ > -loop 1 -framerate "$fps" -i "$img_file" \ >
-loop will demux and decode image over and over again. There is video loop filter that allows to resolve that. > -i "$audio_file" \ > -vf "crop=w=$xres:h=$yres:x=t*(iw-ow)/$num_secs:y=0" \ > -shortest \ > -r "$fps" \ > -c:v libx264 \ > -c:a copy \ > -pix_fmt yuv420p \ > "$vid_file" > _______________________________________________ > ffmpeg-user mailing list > ffmpeg-user@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-user > > To unsubscribe, visit link above, or email > ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".