Live video on the AT Protocol
at next 35 lines 1.1 kB view raw
1#!/bin/bash 2 3# Generates a video with a sine wave that loops 60 times for testing the segmenter and whatnot 4 5set -euo pipefail 6 7DURATION="${DURATION:-60}" 8WIDTH="${WIDTH:-1280}" 9HEIGHT="${HEIGHT:-720}" 10HALF_HEIGHT=$((HEIGHT / 2)) 11 12ffmpeg -y \ 13 -f lavfi -i "aevalsrc=0.125 * sin(2 * PI * (150+(800*mod(t\,1))) * mod(t\,1)):sample_rate=48000" \ 14 -filter_complex " 15 color=c=green:s=${WIDTH}x${HALF_HEIGHT}:r=60:d=${DURATION},format=yuv420p[green]; 16 color=c=blue:s=${WIDTH}x${HALF_HEIGHT}:r=60:d=${DURATION},format=yuv420p[blue]; 17 [green][blue]overlay=x='mod(((n-1)/60),1)*(overlay_w+(overlay_w/60)+1)'[colorfade]; 18 [0:a]asplit[audio][audio2]; 19 [audio2]showwaves=split_channels=1:s=${WIDTH}x${HALF_HEIGHT}:rate=25,fps=60[waveform]; 20 [colorfade][waveform]vstack[video]; 21 " \ 22 -map "[video]" \ 23 -map "[audio]" \ 24 -c:v libx264 \ 25 -preset ultrafast \ 26 -g 60 \ 27 -keyint_min 60 \ 28 -x264-params "keyint=60:scenecut=0:bframes=0" \ 29 -crf 23 \ 30 -c:a libopus \ 31 -b:a 128k \ 32 -t "${DURATION}" \ 33 output_looped.mp4 34 35ffplay output_looped.mp4