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.12
  • 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.0.tar.gz (7.0 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.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mp4sp-1.0.0.tar.gz
  • Upload date:
  • Size: 7.0 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.0.tar.gz
Algorithm Hash digest
SHA256 f0701d8034cfaa0f8dca210dff3f69e871a10e4b0a88e095ed62ca2ff941f417
MD5 a6bb933ed94801de386357216c3dd159
BLAKE2b-256 aae2dc35f4947b003fdec9bceae1cfc61bfbae35f44787d29286489492281819

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mp4sp-1.0.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e2a3bc916419957425359e1f47d3c989cbf7185f601685f3f195bb1f8a0862d
MD5 52a6f42c4f01f36ef9693a55b90da205
BLAKE2b-256 16d8d07f9b6029ca0a69c938623b572b883cb6c3a033b7338a146ff80f59bed9

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