Beamer is a LaTeX document class used to create presentation slides (.tex files) instead of PowerPoint files. It is popular in academic and technical work because slides are text-based, version-control friendly, and easy to automate.
This project helps bridge Beamer workflows with presentation/video outputs by converting Beamer sources into formats that are easier to share, edit, and narrate.
This repository includes two Flask apps:
app.py(port8000): Upload a Beamer.zipand convert it to:
- Editable
.pptx - Image-based
.pptx(with notes from\narration{...}) - Narrated
.mp4video
pptx_video_app.py(port8001): Upload a.pptx, read speaker notes, and generate a narrated.mp4.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtpython app.pyOpen http://localhost:8000
Use this when your source is LaTeX Beamer files packaged as a .zip.
python pptx_video_app.pyOpen http://localhost:8001
Use this when you already have a .pptx and want a narrated video from slide notes.
demo/basic_demo.tex: Basic 4-slide academic Beamer demo with narration tags and an image.demo/basic_demo_upload.zip: Ready-to-upload zip forapp.py.demo/latex_to_pptx_to_video_demo.tex: Demo for the full two-app pipeline (LaTeX -> PPTX -> narrated MP4) with an image.demo/latex_to_pptx_to_video_demo_upload.zip: Ready-to-upload zip forapp.py.demo/assets/: Image assets used by the demo slides.demo/README.md: Step-by-step instructions for running the demos.
- Beamer ZIP app expects a
.zipcontaining the main.texand referenced assets. - If Beamer conversion script location varies, set
BEAMER_TO_PPTX_SCRIPT=/full/path/to/beamer_to_pptx.py. - If multiple
.texfiles exist, the app prefers a Beamer class file. - Beamer image/video paths need
latexmkandpdftoppm. - Video generation needs
ffmpeg. - PPTX app uses LibreOffice (
soffice) +pdftoppmfor full rendering when available. - Without LibreOffice, the PPTX app falls back to extracting embedded slide images.