---
title: "Create a video slideshow from images"
description: "Turn a collection of images into an animated video with Ken Burns effects, text overlays, logos, and background music — using a fully declarative Pixeltable pipeline."
url: "https://www.pixeltable.com/notebooks/video-image-slideshow"
updated: "2026-05-08"
---

# Create a video slideshow from images

Turn a collection of images into an animated video with Ken Burns effects, text overlays, logos, and background music — using a fully declarative Pixeltable pipeline.

- **Type:** Notebook
- **Group:** Video

## How it works

The key insight: store per-clip metadata (caption text, pan direction, logo) as table columns. One chained computed column expression handles the entire pipeline, and Pixeltable evaluates it per row.

## What it covers

- Convert still images into animated video clips with pan effects
- Control pan direction per image from table data (no Python loops)
- Add per-image captions and a logo overlay
- Concatenate all clips and add background music

## What it uses

- **Install:** `pip install pixeltable`
- **Pixeltable calls:** `video.concat_videos_agg()`, `video.with_audio()`, `pxt.create_table()`, `insert()`, `add_computed_column()`, `group_by()`

## A look at the code

```python
MUSIC_URL = 'https://raw.githubusercontent.com/pixeltable/pixeltable/main/docs/resources/sample-background-music.m4a'

final = pxt.create_table(
    'slideshow_demo/final', {'video': pxt.Video, 'music': pxt.Audio}
)
final.insert([{'video': video_path, 'music': MUSIC_URL}])
final.add_computed_column(out=with_audio(final.video, final.music))

final.select(final.out).collect()
```

## Open it

- **Open in Colab:** https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/release/howto/cookbooks/video/video-image-slideshow.ipynb
- **Docs page:** https://docs.pixeltable.com/howto/cookbooks/video/video-image-slideshow
- **Source on GitHub:** https://github.com/pixeltable/pixeltable/blob/release/docs/release/howto/cookbooks/video/video-image-slideshow.ipynb
