# Encode inputfile.tar.gz as a series of video frames # Frames are written to frames/frameNNNN.png from PIL import Image with open('inputfile.tar.gz', 'rb') as f: data = f.read() WIDTH = 120 HEIGHT = 90 CHUNK_SIZE = int((WIDTH * HEIGHT) / 8) chunks = [] offset = 0 while offset < len(data): chunks.append(data[offset:offset+CHUNK_SIZE]) offset += CHUNK_SIZE for frame_num, chunk in enumerate(chunks): padded_chunk = chunk + (b'\0' * (CHUNK_SIZE - len(chunk))) img = Image.frombytes('1', (WIDTH, HEIGHT), padded_chunk) img.save('frames/frame%04d.png' % (frame_num + 1)) # Encode as video with: # ffmpeg -i frames/frame%04d.png -vf scale=1440:1080 -sws_flags neighbor -vcodec ffv1 output.mkv # Decode the resulting downloaded video with: # ffmpeg -i downloaded.mkv -vf scale=120:-1,eq=contrast=10 -sws_flags neighbor -pix_fmt monob -f rawvideo result.tar.gz