Skip to main content

Split MP4 files into multiple clips from a CSV segment list.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mp4sp-1.0.3.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mp4sp-1.0.3-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file mp4sp-1.0.3.tar.gz.

File metadata

  • Download URL: mp4sp-1.0.3.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for mp4sp-1.0.3.tar.gz
Algorithm Hash digest
SHA256 6f9199b9358511732107f78bed3289e6b4ce38a58a5bfa11164c3214c0e3224f
MD5 8d644e09e8bc1cf6fe9ca029f70ca07c
BLAKE2b-256 b7e73f85509fe2a51f210d63fd0cae4e1f797de630dd533b169dc68843bf6e1f

See more details on using hashes here.

File details

Details for the file mp4sp-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: mp4sp-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for mp4sp-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0f6ffd4fd123212f90d311ce7983e30d972f88668539931fc7ff73df9e60a9bd
MD5 00ced18d3bfb45d2f47193cef3782b1a
BLAKE2b-256 3dfa8083a60b5d9addcd23090cb4d66b95d1ffb7107550570d3af4a31d6a7662

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page