Skip to content

Commit ef3d71a

Browse files
committed
Create video_splitter.py
1 parent efc8ce3 commit ef3d71a

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

scripts/video_splitter.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""
2+
Suddivide un file video in spezzoni di massimo 30 minuti tramite ffmpeg.
3+
"""
4+
5+
import os
6+
import subprocess
7+
import sys
8+
9+
def split_video():
10+
print("--- Suddividi Video in Spezzoni da 30 Minuti ---")
11+
video_path = input("Inserisci il percorso completo del file video: ").strip()
12+
13+
# Rimuove apici che potrebbero essere aggiunti trascinando il file nel terminale
14+
if video_path.startswith('"') and video_path.endswith('"'):
15+
video_path = video_path[1:-1]
16+
17+
if not os.path.isfile(video_path):
18+
print(f"Errore: Il file '{video_path}' non esiste o non è stato trovato.")
19+
return
20+
21+
# Estrazione di directory, nome e estensione originale
22+
directory = os.path.dirname(os.path.abspath(video_path))
23+
filename = os.path.basename(video_path)
24+
name, ext = os.path.splitext(filename)
25+
26+
# Creazione del pattern di output: es. video_originale_part001.mp4
27+
output_pattern = os.path.join(directory, f"{name}_part%03d{ext}")
28+
29+
print(f"\nPreparazione per suddividere: {filename}")
30+
print(f"I segmenti verranno creati nella cartella: {directory}\n")
31+
32+
# Costruzione del comando FFmpeg.
33+
# Usiamo il muxer "segment" per dividere il video senza ricodificarlo (-c copy),
34+
# il che rende il processo estremamente rapido mantenendo la qualità originale.
35+
# segment_time = 1800 secondi (30 minuti).
36+
cmd = [
37+
"ffmpeg",
38+
"-i", video_path,
39+
"-c", "copy",
40+
"-map", "0",
41+
"-segment_time", "1800",
42+
"-f", "segment",
43+
"-reset_timestamps", "1",
44+
output_pattern
45+
]
46+
47+
try:
48+
# Esegue il comando lasciando che l'output di FFmpeg venga mostrato all'utente
49+
subprocess.run(cmd, check=True)
50+
print("\n[OK] Suddivisione completata con successo!")
51+
except FileNotFoundError:
52+
print("\n[ERRORE] Eseguibile 'ffmpeg' non trovato.")
53+
print("Assicurati che FFmpeg sia installato e aggiunto alla variabile d'ambiente PATH del sistema.")
54+
except subprocess.CalledProcessError as e:
55+
print(f"\n[ERRORE] Il processo FFmpeg ha riportato un errore (codice: {e.returncode}).")
56+
except Exception as e:
57+
print(f"\n[ERRORE] Si è verificato un problema imprevisto: {e}")
58+
59+
if __name__ == "__main__":
60+
split_video()

0 commit comments

Comments
 (0)