# Ffmpeg Video Editing

Video editing with ffmpeg including cutting, trimming, concatenating segments, and...

- Repository: https://github.com/benchflow-ai/skillsbench (1888 stars)
- Category: Media
- License: Apache-2.0
- Last updated: 2026-10-24
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add benchflow-ai/skillsbench --skill ffmpeg-video-editing -g -a claude-code -y`
Codex: `npx skills add benchflow-ai/skillsbench --skill ffmpeg-video-editing -g -a codex -y`
Cursor: `npx skills add benchflow-ai/skillsbench --skill ffmpeg-video-editing -g -a cursor -y`
Gemini CLI: `npx skills add benchflow-ai/skillsbench --skill ffmpeg-video-editing -g -a gemini-cli -y`

## Description

Video editing with ffmpeg including cutting, trimming, concatenating segments, and re-encoding. Use when working with video files (.mp4, .mkv, .avi) for: removing segments, joining clips, extracting portions, or any video manipulation task.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# FFmpeg Video Editing

## Cutting Video Segments

### Extract a portion (keep segment)

```bash
# Extract from start_time to end_time
ffmpeg -i input.mp4 -ss START -to END -c copy output.mp4

# With re-encoding for frame-accurate cuts
ffmpeg -i input.mp4 -ss START -to END -c:v libx264 -c:a aac output.mp4
```

### Remove a segment (cut out middle)

To remove a segment, split into parts and concatenate:

```bash
# 1. Extract before the cut
ffmpeg -i input.mp4 -to CUT_START -c copy part1.mp4

# 2. Extract after the cut  
ffmpeg -i input.mp4 -ss CUT_END -c copy part2.mp4

# 3. Concatenate
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
```

## Concatenating Multiple Segments

### Using concat demuxer (recommended for same-codec files)

Create a file list (`segments.txt`):
```
file 'segment1.mp4'
file 'segment2.mp4'
file 'segment3.mp4'
```

Then concatenate:
```bash
ffmpeg -f concat -safe 0 -i segments.txt -c copy output.mp4
```

### Using filter_complex (for re-encoding)

```bash
ffmpeg -i seg1.mp4 -i seg2.mp4 -i seg3.mp4 \
  -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]" \
  -map "[v]" -map "[a]" output.mp4
```

## Removing Multiple Segments (Batch)

For removing many short segments (like filler words), the efficient approach:

1. Calculate the "keep" segments (inverse of remove segments)
2. Extract each keep segment
3. Concatenate all keep segments

```python
import subprocess
import os

def remove_segments(input_file, segments_to_remove, output_file):
    """
    segments_to_remove: list of (start, end) tuples in seconds
    """
    # Get video duration
    result = subprocess.run([
        'ffprobe', '-v', 'error', '-show_entries', 'format=duration',
        '-of', 'default=noprint_wrappers=1:nokey=1', input_file
    ], capture_output=True, text=True)
    duration = float(result.stdout.strip())

    # Sort segments and merge overlapping
    segments = sorted(segments_to_remove)

The rest: https://github.com/benchflow-ai/skillsbench/blob/HEAD/tasks-extra/video-filler-word-remover/environment/skills/ffmpeg-video-editing/SKILL.md
