The Outrage Machine

An experiment in algorithmic filmmaking

Back to Home

About

This is an experiment in algorithmic filmmaking that appropriates images from news channels and makes then into feature-length montages. I ran this experiment between 2018 and 2019. The film is made purely by automated code running on Linux (see below). The code produced a new film every night and 24 hours of images created approximately 83 minutes of video. Algorithmic variables that overlaid text and produced visual effects were also added.

By compiling and recontextualizing imagery from 24-hour news cycles, the experiment presents a visual example in media saturation and auto-narrative creation.

Watch an extract from March 12th 2019

A 24 hour cycle from 15th June 2019

Watch a filtered extract from July 31st 2019

Technical Description

The project runs 24 hours a day and generates images at a rate of approximately 10,700 images in a 24 hour period. Over the course of the experiment I used IPTV images from among the the following channels: Africa 24, ABC News, Rossiya 24, CGTN News, Alekhbaria, France 24, Euronews, CNN, Al Jazeera, Sky News, Fox News, BBC. Taken with a gap of 7 seconds between images, the images are subsequently joined together consecutively to create a long form collage video that describes the progress of a day in its news images. The bash scripts used ffmpeg to grab images and to concatenate them overnight. The script is adapted below to include the overlay of text files, in the examples shown this includes The Coming Insurrection and The Society of the Spectacle. Scripts run via Linuix cron jobs.

Bash script to grab images

datetime=`date '+%F_%H_%M_%S'`;
datedir=`date '+%F'`;
mkdir -p ext3/24hours/$datedir;

#pass the filename of a comma delimited file with url of iptv stream and an arbitrary name (channel), one pair per line:  
#./create24hrs.sh newsiptvurls
#newsiptvurls:
#url,name
#url,name0
#url,name1
iptvurlstxt=$1;
lengthofclips=$2;
operations=$3;

filelines=`cat $iptvurlstxt`;
#get a frame from each stream in the $iptvurlstxt file and scale to 1920 before saving to the channel named and timestamped file
for line in $filelines ; do
    arrline=(${line//,/ })

    ffmpeg -i  ${arrline[0]}  -vf "scale=w=1920:h=1080" -ss 00:00:01.000 -vframes 1 "ext3/24hours/$datedir/${arrline[1]}-$datetime.png"

done;


Bash script to create film

#!/bin/bash
#process png into movie after midnight
datedir=`date --date="-1 day" '+%F'`;


ls  -rt /home/conor/24hours/$datedir/*.png > /home/conor/24hours/$datedir/ls-rt.txt;
sed -i -e "s/^/file '/" /home/conor/24hours/$datedir/ls-rt.txt;

sed -i -e s/$/\'/ /home/conor/24hours/$datedir/ls-rt.txt;

ffmpeg -y -r 10/5 -f concat -safe 0 -i /home/conor/24hours/$datedir/ls-rt.txt -vf  "[in]drawbox=y=ih/PHI:color=black@0.4:width=iw:height=244:t=fill, drawtext=fontfile='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf':textfile='/home/conor/24hours/test/cominginsurrection.txt':fontcolor=white@1.0:fontsize=78:y=h-4h:x=-50*t, drawtext=fontfile='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf':textfile='/home/conor/24hours/test/societyofthespectacle.txt':expansion=none:fontcolor=white@1.0:fontsize=78:y=h-3h:x=-50*t[out]" -c:v libx264 /home/conor/24hours/$datedir/$datedir-24latest.mp4;