Per seguire questo articolo non vi servirà alcuna conoscenza di linguaggi di programmazione, poiché ogni passaggio è descritto partendo da zero e gli script sono già pre-impostati. Se notate qualche log di errore, basterà darlo in pasto ad una IA come Claude per farvi indirizzare a correggerli.
Ho testato la procedura utilizzando una scheda nVidia con 24 GB di RAM e modello qwen3.8 27B. Se usate schede AMD, qualche variabile potrebbe dover essere settata diversamente.
Per comodità ho inserito gli script in un file zip scaricabile da qui: script_montaggio_qwen3.5_9b.zip
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Introduzione: cos'è un LLM
Un LLM (Large Language Model) è un modello di intelligenza artificiale addestrato su enormi quantità di testo per prevedere la parola successiva. Da questo meccanismo semplice nascono capacità sorprendenti: riassumere, ragionare, scrivere codice.
La sua "potenza" dipende molto dal numero di parametri appresi durante l'addestramento. Quando senti parlare di un modello "9B" o "27B", significa 9 o 27 miliardi di parametri: più parametri significano più capacità, ma anche più memoria necessaria.
Dimensioni e requisiti di memoria
Qwen3.5 9B Multimodale (testo + immagini), contesto 262K token ~7 GB VRAM
Qwen3.8 27B Visione avanzata, Q4_K_M ~19 GB VRAM
Qwen3.8 2.4T Fuori portata per PC domestico ≥450 GB RAM
La quantizzazione comprime i pesi del modello per ridurre la memoria, con una piccola perdita di qualità. È ciò che rende possibile usare questi modelli su una scheda video normale.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Perché in locale?
🔒 Privacy — I tuoi video restano sul computer e non vengono caricati su server di terzi.
💰 Costi — Lo script analizza centinaia o migliaia di fotogrammi. Con un servizio cloud ogni immagine si paga; in locale il costo marginale è la corrente elettrica.
⚙️ Controllo — Nessun limite di utilizzo, nessun abbonamento, funziona offline. Il modello non cambia: i risultati sono ripetibili.
Compromesso: i modelli cloud più grandi sono generalmente più capaci, ma per un compito circoscritto come valutare i fotogrammi, un modello locale da 9B o 27B è più che sufficiente.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Prerequisiti hardware
Scheda video
- 12 GB (RTX 3060, RTX 4070, RTX 5070) — Qwen3.5 9B
- 16 GB (RTX 5060 Ti, RTX 5070 Ti, RTX 5080) — 9B con più margine; il 27B entra solo a 3 bit
- 24 GB+ (RTX 3090, RTX 4090, RTX 5090) — Qwen3.8 27B, più preciso
Nota: Nvidia è la scelta più semplice. AMD e Intel funzionano ma richiedono più configurazione. Processore: 6 core o più, 32 GB di RAM consigliati (16 GB minimo), SSD veloce.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Prerequisiti software
- Python 3.10 — python.org/downloads (Windows: spunta "Add Python to PATH"). Gli script sono stati provati con la 3.10.6: se con una versione più recente l'installazione di
librosadà errori, usa la 3.10 - Ollama — ollama.com/download (Windows, macOS, Linux). Serve una versione recente: se hai un'installazione vecchia, aggiornala
- FFmpeg — ffmpeg.org —
winget install ffmpeg/brew install ffmpeg/sudo apt install ffmpeg. Comprende anche ffprobe, usato dagli script - Driver NVIDIA aggiornati — servono a Ollama e alla decodifica dei video sulla GPU; senza, tutto gira sulla CPU, molto più lentamente
- DaVinci Resolve — blackmagicdesign.com (gratuito per importare; script 7 richiede Studio) oppure Final Cut (Mac)
Dopo l'installazione chiudi e riapri il terminale e controlla che questi comandi vengano riconosciuti (altrimenti il programma non è nel PATH):
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Installazione
Python e librerie
Ogni volta che apri un nuovo terminale, riattiva l'ambiente con la seconda riga prima di lanciare gli script.
Su Windows, in PowerShell, il comando di attivazione può fermarsi con un errore sugli script disabilitati: lancia una volta Set-ExecutionPolicy -Scope CurrentUser RemoteSigned e riprova, oppure usa il Prompt dei comandi. Su macOS e Linux al posto di python usa di solito python3.
Struttura delle cartelle
Le sottocartelle vengono create automaticamente. I video possono stare dove preferisci: il percorso si indica in avvia_montaggio.py.
Modelli su Ollama
Il modello predefinito è Qwen3.5 9B, adatto a schede da 12 GB in su (il download pesa circa 7 GB):
Con 24 GB puoi usare invece Qwen3.8 27B, più preciso: scaricalo, verifica il nome con ollama list e scrivilo nella variabile MODEL della CONFIG.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
La configurazione centrale: avvia_montaggio.py
A differenza della versione precedente, non è più necessario modificare i singoli script. Tutte le variabili principali sono nella sezione CONFIG di avvia_montaggio.py e vengono passate automaticamente tramite variabili d'ambiente.
Modifica almeno CLIPS_DIR con la cartella dei tuoi video. La r davanti alle virgolette evita problemi con i backslash di Windows.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Gli script
Script 1 — Estrarre un frame ogni 2 secondi
1_estrai_fotogrammi.py usa FFmpeg per estrarre un fotogramma ogni 2 secondi, ridimensionato a WIDTH = 768 px. I risultati vanno in frames/nome_clip/ con un file meta.json. Se rilanci, elabora solo i clip nuovi. Con USE_CUDA = True usa la GPU; in caso di errore passa da solo alla CPU.
Script 2 — Riconoscere le scene statiche
Misura il movimento in ogni clip secondo per secondo, per evitare che le scene ferme — hovering, decollo, atterraggio — finiscano nel montaggio. Va eseguito dopo lo script 1.
Facoltativo ma consigliato: senza questi dati lo script 5 scarta comunque i primi 4 e gli ultimi 2 secondi, ma non rileva i tratti fermi a metà ripresa.
Script 3 — Dare un punteggio ai frame
Manda i frame al modello a blocchi (CHUNK = 10). Per ogni frame: voto 1–10, tipo di inquadratura, breve nota. Salva in punteggi/ schede riutilizzabili — se cambi musica non devi rifare questo passo. Con GESTISCI_OLLAMA = True avvia e chiude Ollama automaticamente, liberando la VRAM.
Script 4 (facoltativo) — Prompt per generare la musica
4_prompt_musica.py mostra al modello i frame migliori e propone descrizione musicale, BPM e tonalità. Il risultato va in musica/prompt.txt da incollare in un generatore (ACE-Step o simili). Nella CONFIG, DURATA_VIDEO è la durata del video (la usa anche lo script 5) e DURATA_MUSICA quella del brano da generare: conviene lasciare qualche secondo in più del video. Se attivi il passo 4, il processo si mette in pausa per farti copiare il brano come musica.mp3.
Script 5 — Il montaggio e il file per DaVinci Resolve
I tempi musicali e la selezione dei momenti li decide Python, non il modello. Lo script trova i battiti, decide i tagli e assegna alle parti più energetiche le inquadrature con il punteggio più alto.
Variabili principali
- DURATA_VIDEO — durata del video finale in secondi
- MUSICA_INIZIO — "auto" (predefinito): il video parte sul primo battito forte del brano, così i tagli cadono a tempo; oppure un secondo preciso, per esempio 12.5
- BEAT_PER_TAGLIO — "auto" oppure numero intero (es. 4 = un taglio ogni 4 battiti)
- DURATA_MIN_TAGLIO / DURATA_MAX_TAGLIO — lunghezza minima e massima dei tagli in secondi
- RIUSO_PENALITA — più alto = più varietà tra clip diversi
- SCARTA_INIZIO / SCARTA_FINE / MOVIMENTO_MIN — secondi scartati a inizio/fine e soglia movimento
- ANTEPRIMA — True per generare un video di anteprima a 720p
Lo script produce montaggio.fcpxml (consigliato, include la musica) e montaggio.edl (alternativa semplificata) nella cartella montaggio/.
Importazione in DaVinci Resolve
- File → Import → Timeline → scegli
montaggio.fcpxml. - I dischi con i video devono essere collegati. La musica è già nella timeline.
- Se l'audio è vuoto, trascina
musica.mp3sulla timeline dal secondo indicato dallo script nel messaggio "Partenza automatica" (o daMUSICA_INIZIO, se l'hai impostato a mano). - Usa l'EDL solo se l'FCPXML dà problemi (clip già nel Media Pool).
Importazione in Final Cut Pro (non testato)
- File → Import → XML
Importazione in Abobe Premiere Pro* (non testato)
- File → Import
*purtroppo su premiere funziona solo il file .EDL, quindi bisognerà importare a mano le clip e la musica all'interno del progetto
Limiti da conoscere: il rilevamento battiti può sbagliare su ritmi irregolari — prova BEAT_PER_TAGLIO = 4. Su ambient o jazz può servire un aggiustamento manuale. Video non raggiungibili (disco scollegato) vengono segnalati e ignorati.Script 6 (facoltativo) — Uniformare esposizione e bilanciamento del bianco
6_correzione_colore.py misura luminosità e dominante di colore di ogni taglio e calcola un guadagno per canale (R, G, B). ESPOSIZIONE_FORZA e WB_FORZA regolano l'intensità (0–1); CLIP_RIFERIMENTO permette di usare un clip specifico invece della mediana.
Avvertenza Resolve: applica la correzione sul nodo del clip, prima della conversione a Rec.709 (che va sul nodo della timeline).
Script 7 (facoltativo) — Applicare le correzioni in Resolve
Richiede DaVinci Resolve Studio. Copia il file in
, poi in Resolve: Workspace → Scripts → Edit → 7_applica_resolve. Lanciato dal menu di Resolve, lo script non riceve le impostazioni di avvia_montaggio.py: se serve, apri il file e modifica CORREZIONI (percorso di correzioni.json) e METODO. Con METODO = "lut" usa i file .cube invece dei valori CDL. Resolve lo esegue con il Python installato sul PC (non con l'ambiente virtuale) e non servono librerie aggiuntive.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Ordine di esecuzione
Il modo più semplice è un solo comando dalla cartella di progetto:
Oppure i singoli script manualmente:
Lo script 7 si lancia dall'interno di DaVinci Resolve dopo aver importato la timeline.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Conclusioni
Il punto di forza è la divisione dei compiti: Python gestisce musica, tempi e selezione dei tagli (dove serve precisione); il modello guarda le immagini e ne giudica la qualità (dove serve giudizio).
Con 12 GB di VRAM e un modello da 9B il risultato è già utilizzabile come prima bozza da rifinire in DaVinci. Potete fare tutto in background mentre usate il PC per altro (no gaming ovviamente!).
Tempi di riferimento
Test su ~10 GB di video DJI Mini 4 Pro, modello qwen3.8:27B, usando scheda video con 24GB onboard:
- Passo 1 — Estrazione fotogrammi: 1 min 57 s
- Passo 2 — Misura del movimento: 2 min 5 s
- Passo 3 — Punteggi fotogrammi: 7 min 56 s
- Passo 5 — Montaggio: 4 s
- Passo 6 — Correzione colore: 1 s
- Totale: 12 min 4 s
Fondamentale è la scelta musicale o la generazione della stessa in base alle scene. Lo vedremo in un articolo successivo.
Scarica gli script: script_montaggio_qwen3.5_9b.zip