Skip to main content

mp4_splitter

Command-line utility for splitting MP4 files into multiple clips based on a CSV segment list.

Requirements

  • Python 3.10.12 or newer
  • ffmpeg available on your PATH

Installation

pip install mp4sp
# or, inside this repository
uv sync
uv run mp4sp --help

Preparing the segment list

Create a UTF-8 CSV file with the columns filename, start, and end. Timestamps can be in HH:MM:SS[.mmm] format.

filename,start,end
test.mp4,00:00:01.000,00:00:05.167
test.mp4,00:00:05.168,00:00:10.000
test.mp4,00:00:10.001,00:01:03.000
another.mp4,12,24
  • filename is resolved relative to the input directory you pass via --input.
  • Each row produces an output file named <original>_cut_<index>.mp4.
  • Pure numbers in start/end are treated as seconds, so another.mp4,12,24 means “take another.mp4 from 12s to 24s,” yielding a 12-second clip.
  • If you pass a single file to --input, ensure the filename column matches that file name; all other rows are skipped automatically.

Usage

  1. Place the source videos under an input folder (or point directly at a single .mp4 file), e.g. videos/.
  2. Create the CSV file as described above, e.g. split_list.csv.
  3. Run the CLI:
mp4sp \
--input videos \
--output clips \
--csv split_list.csv \
--threads 8 \
--safe

Options

  • --input / -i: Directory containing the source MP4 files (required). You may also pass a single .mp4 file path, in which case rows for other files are ignored and only that file is processed.
  • --output / -o: Directory in which the clips will be written (required; created if missing).
  • --csv / -c: Path to the CSV file with segment definitions (required).
  • --threads / -t: Number of parallel splits to run. Defaults to 4.
  • --safe / -s: Re-encode each clip to avoid artifacts (slower but frame-accurate).

Set --safe when you need artifact-free cuts or when cutting from formats where keyframes are sparse. Omit it for the fastest stream-copy mode.

Example from source checkout

uv run mp4sp \
-i samples/input \
-o samples/output \
-c split_list.csv \
-t 4 \
-s

Upon completion the tool logs progress for each clip and finishes with All tasks completed.. The resulting files reside in the output directory.

Metadata

Release files for mp4sp 1.0.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 mp4sp 1.0.3
File Size Uploaded
mp4sp-1.0.3.tar.gz 7.1 kB Details

Built distribution (wheel)

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

Total release size: 12.9 kB

Release files / mp4sp-1.0.3.tar.gz

Download URL mp4sp-1.0.3.tar.gz
Size 7.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6f9199b9358511732107f78bed3289e6b4ce38a58a5bfa11164c3214c0e3224f
BLAKE2b-256 checksum
How to use checksums
b7e73f85509fe2a51f210d63fd0cae4e1f797de630dd533b169dc68843bf6e1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mp4sp-1.0.3-py3-none-any.whl

Download URL mp4sp-1.0.3-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f6ffd4fd123212f90d311ce7983e30d972f88668539931fc7ff73df9e60a9bd
BLAKE2b-256 checksum
How to use checksums
3dfa8083a60b5d9addcd23090cb4d66b95d1ffb7107550570d3af4a31d6a7662
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

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