Skip to main content

Superimposer — combine presentation videos with slides

You have: pdf slides and a video of you talking about them.

You want: a video of your slides with you in the corner.

You need: superimposer.

So, you presented something, and now have a recording of it, that's awesome! But the slides are hard to read, or got cropped out somehow, and you want to fix that. Fear not, superimposer has you covered! Just tell it what slide to display when, point it at your slides and your video, and it will generate a new video for you with the slides front and center, and your video tucked away nicely in a corner.

To get up and running, you first need the video file for your presentation (let's say it's presentation.mp4) and a PDF file with your slides (let's say it's slides.pdf). Then, create a file called transitions.txt and write:

00:00 1

You probably get the gist here. Play through your presentation, and every time you change slides, write down a new line with the current timestamp (the O hotkey in mpv is handy here) and the desired slide number. When you're done, run:

$ superimposer presentation.mp4 slides.pdf superimposed.mp4

This will eventually kick off ffmpeg, which will take a while to encode your video. When it's done, superimposed.mp4 should have what you want!

Superimposer takes a bunch of handy command-line arguments to tweak the output. Run superimposer --help to see them. If you're using H.264, you may want to consider also giving:

-- -tune stillimage

If you are significantly resizing the camera video, you may want to change the scaling algorithm with:

-- -sws_flags lanczos

Requirements

  • ffmpeg and ffprobe (usually installed with ffmpeg)
  • pdftoppm (part of Poppler)

Normalizing audio

If your audio is sad, try ffmpeg-normalizer with something like:

$ ffmpeg-normalize superimposed.mp4 -o superimposed-normalized.mp4 -c:a aac

Hardware acceleration

You can pass additional parameters to the ffmpeg encoder by placing them after -- in the argument list to superimposer. You'll probably want to read up on hardware acceleration in ffmpeg, and maybe the ffmpeg VAAPI encoding docs.

Examples

Here are some examples of what the resulting video looks like:

Demystifying unsafe code Considering Rust

Metadata

Release files for superimposer 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for superimposer 0.1.3
File Size Uploaded
superimposer-0.1.3.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for superimposer 0.1.3
File Interpreter ABI Platform
superimposer-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 11.4 kB

Release files / superimposer-0.1.3.tar.gz

Download URL superimposer-0.1.3.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d9102e7ad318b3a48fe5b03b9e7372c4a6c8f1091378c8d0c4adf16ffc0ce735
BLAKE2b-256 checksum
How to use checksums
4df2175b87ebc4229ebad75f264724e92675260ed5aceceafca546914b1825fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.16

Release files / superimposer-0.1.3-py3-none-any.whl

Download URL superimposer-0.1.3-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c65d5fdf118f82d16d44cf9791a5f7413877e7d144028ef11adfa399edd2f818
BLAKE2b-256 checksum
How to use checksums
7cde2223e7342f14351bfff6339cd184b757643b21ded5a4ff01d6f3e4e18f63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.16

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page