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.2.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.2-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mp4sp-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 f14bb4130208ff9c4bb57b079ad522de0e7b7efc32faf56e07af61a2fda24738
MD5 c1f1a76dda1cc5a27c39a1f409e11d26
BLAKE2b-256 0c310b8840212bad770a677487cd6a29966c75ee520f8266393f1ea8a70da060

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mp4sp-1.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ac1f03c7d6cd3eef4afa56e62d97f82e30e886c0ffb38c5051aa36b678bdb5ae
MD5 7491aec978a148c830e3160cb59a735d
BLAKE2b-256 10d182b1975eba89c843ec7a9eb854cd8f9f11a50ca1735330bb0699f90685fa

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