Agent skill
ffmpeg-video-editing
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.
Install this agent skill to your Project
npx add-skill https://github.com/benchflow-ai/skillsbench/tree/main/tasks-no-skills/video-filler-word-remover/environment/skills/ffmpeg-video-editing
SKILL.md
FFmpeg Video Editing
Cutting Video Segments
Extract a portion (keep segment)
# 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:
# 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:
ffmpeg -f concat -safe 0 -i segments.txt -c copy output.mp4
Using filter_complex (for re-encoding)
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:
- Calculate the "keep" segments (inverse of remove segments)
- Extract each keep segment
- Concatenate all keep segments
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)
# Calculate keep segments (gaps between remove segments)
keep_segments = []
current_pos = 0.0
for start, end in segments:
if start > current_pos:
keep_segments.append((current_pos, start))
current_pos = max(current_pos, end)
if current_pos < duration:
keep_segments.append((current_pos, duration))
# Extract each keep segment
temp_files = []
for i, (start, end) in enumerate(keep_segments):
temp_file = f'/tmp/seg_{i:04d}.mp4'
subprocess.run([
'ffmpeg', '-y', '-i', input_file,
'-ss', str(start), '-to', str(end),
'-c', 'copy', temp_file
], check=True)
temp_files.append(temp_file)
# Create concat list
list_file = '/tmp/concat_list.txt'
with open(list_file, 'w') as f:
for temp_file in temp_files:
f.write(f"file '{temp_file}'\n")
# Concatenate
subprocess.run([
'ffmpeg', '-y', '-f', 'concat', '-safe', '0',
'-i', list_file, '-c', 'copy', output_file
], check=True)
# Cleanup
for f in temp_files:
os.remove(f)
os.remove(list_file)
Common Issues
Audio/Video sync problems
- Use
-c copyonly when cutting at keyframes - For precise cuts, re-encode:
-c:v libx264 -c:a aac
Gaps or glitches at cut points
- Ensure segments don't overlap
- Small buffer (0.01s) between segments can help
Getting video duration
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
csv-processing
Use this skill when reading sensor data from CSV files, writing simulation results to CSV, processing time-series data with pandas, or handling missing values in datasets.
pid-controller
Use this skill when implementing PID control loops for adaptive cruise control, vehicle speed regulation, throttle/brake management, or any feedback control system requiring proportional-integral-derivative control.
yaml-config
Use this skill when reading or writing YAML configuration files, loading vehicle parameters, or handling config file parsing with proper error handling.
simulation-metrics
Use this skill when calculating control system performance metrics such as rise time, overshoot percentage, steady-state error, or settling time for evaluating simulation results.
vehicle-dynamics
Use this skill when simulating vehicle motion, calculating safe following distances, time-to-collision, speed/position updates, or implementing vehicle state machines for cruise control modes.
web-interface-guidelines
Vercel's comprehensive UI guidelines for building accessible, performant web interfaces. Use this skill when reviewing or building UI components for compliance with best practices around accessibility, performance, animations, and visual stability.
Didn't find tool you were looking for?