Skip to main content

automatic cut

# flow

# 1. sync audio video

# devo farlo manualmente e per farlo devo prima:
# 1. sincronizzare video e voci
# 2. tagliare in modo che il mio video e quello di ste abbiano la stessa partenza e fine
# 3. esportare video e voci (avrò quindi 2 video e 1 wav voce)
# 4. cambiare la voce in MP3 o AAC perché auto-edito non sa gestire wav
# 4.1 migliorare voci
# 1. Rimozione rumore di fondo
## bisogna scaricare un modello
## https://github.com/GregorR/rnnoise-models
ffmpeg -i voci.wav -af "arnndn=m=cb.rnnn" voci-denoise.wav
# 2. Highpass/Lowpass
# 3. Normalizzazione
ffmpeg -i .\voci.mp3 -af "highpass=f=100,lowpass=f=12000" voci-clean.mp3
# 5. combinare mp3 con video
# i punti 4 e 5 si possono fare con un comando
# -c:a:1 aac -b:a:1 320k ---> ricodifica in aac 320 kbps
# ma ormai con il coso registro a 192 kbps MP3 (e va bene lo stesso)
ffmpeg -i video-gameplay.mp4 -i voci.wav -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac -b:a:1 320k -timecode 00:00:00:00 combined-voci-gameplay.mp4
# 6- tagliare automaticamente
auto-editor .\combined-voci-gameplay.mp4 --edit "audio:stream=1,threshold=1%" --margin 1sec --export resolve --output combined-voci-gameplay-cutted.mp4

# https://www.youtube.com/watch?v=TghCv7EU5kk
# - auto speech mode funziona da dio
# - poi in pratica in base all'audio ti gestisci...
# - FX -> EQ -> DY
# - FX (effetti) : Noise Reduction
# - EQ (indovina): Indovina? Equalizzatore
# - DY (Dynamics): Normalize (non usare il normalize di davinci ti alza solo il volume e non fa nessuna compressione)

devlog​


auto-editor .\sync-vintage-story-ep1.mp4 --edit "(or (audio 0.05) (motion 0.90))" --margin 3sec,5sec --export resolve --output cutted-motion-audio.mp4 --stats

# https://auto-editor.com/ref/edit

auto-editor .\combined-voci-gameplay.mp4 --edit "audio:threshold=1%" --margin 10sec --export resolve --output combined-voci-gameplay-cutted.mp4 --stats

# tutto insieme
ffmpeg -i video-gameplay.mp4 -i voci.wav \
-map 0:v -map 0:a -map 1:a \
-c:v copy -c:a:0 copy \
-c:a:1 aac -b:a:1 320k \
-af:2 "highpass=f=100,lowpass=f=12000" \
-timecode 00:00:00:00 combined-voci-gameplay.mp4

# ho trovato un flusso funzionante
auto-editor .\combined-voci-sam-grounded-ep1.mp4 --edit "audio:stream=1,threshold=1%" --margin 1sec --export resolve --output combined-voci-sam-grounded-ep1-cutted.mp4

ffmpeg -i ste.mp4 -i voci.wav -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac -b:a:1 320k -timecode 00:00:00:00 combined-voci-sam-grounded-ep1.mp4

# maa se metto un margine più grande?
# sì conviene aumentare perché si taglia qualche parola alla fine della frase con 0.3
auto-editor .\combined-voci-sam-grounded-ep1.mp4 --edit "audio:stream=1,threshold=1%" --margin 1sec --when-silent nil --export resolve

# tanta fucking roba
auto-editor .\combined-voci-sam-grounded-ep1.mp4 --edit "audio:stream=1,threshold=1%" --margin 0.3sec --export resolve

ffmpeg -i sam-grounded-ep1-raw-fixed.mp4 -i voci-grounded-ep1-raw-fixed.wav -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac -b:a:1 320k -timecode 00:00:00:00 combined-voci-sam-grounded-ep1.mp4

# Il problema è quasi certamente che auto-editor non sa gestire PCM raw (pcm_s16le) come sorgente per il rilevamento dei silenzi — si aspetta audio compresso come AAC o MP3.

auto-editor .\combined-voci-sam-grounded-ep1.mp4 --edit "audio:stream=1,threshold=4%" --stats

# controlla il numero della traccia aggiunta
ffprobe .\combined-voci-sam-grounded-ep1.mp4

# Dalla documentazione ufficiale di auto-editor tutti gli esempi usano un singolo file con più tracce audio interne — il caso documentato è auto-editor multi-track.mov --edit "(or audio:stream=0 audio:threshold=10%,stream=1)", ovvero stream multipli dentro lo stesso file.

# In resolve voglio arrivare ad ottenere i 2 gamplay (2 tracce audio e 2 tracce video) e la traccia voci, tutte con dei tagli nei momenti di silenzio delle voci

auto-editor voci-grounded-ep1-raw-fixed.wav sam-grounded-ep1-raw-fixed.mp4 ste-grounded-ep1-raw-fixed.mp4 --edit "audio:stream=0,threshold=0.0001" --export resolve

auto-editor voci-grounded-ep1-raw-fixed.wav sam-grounded-ep1-raw-fixed.mp4 ste-grounded-ep1-raw-fixed.mp4 --edit "audio:stream=0,threshold=0.0001" --stats

auto-editor voci-grounded-ep1-raw-fixed.wav sam-grounded-ep1-raw-fixed.mp4 ste-grounded-ep1-raw-fixed.mp4 --edit "audio:stream=0,threshold=4%" --dry-run

auto-editor voci-grounded-ep1-raw-fixed.wav sam-grounded-ep1-raw-fixed.mp4 ste-grounded-ep1-raw-fixed.mp4 --edit audio:stream=0 --export resolve

auto-editor voci-grounded-ep1-raw-fixed.wav sam-grounded-ep1-raw-fixed.mp4 ste-grounded-ep1-raw-fixed.mp4 --edit audio:threshold=-40dB --export resolve

# Questo errore significa che auto-editor ha tagliato tutto — la soglia di default è troppo aggressiva per il tuo audio. Proviamo ad abbassarla:
# Error! Timeline is empty, nothing to do.

auto-editor voci-grounded-ep1-raw-fixed.wav sam-grounded-ep1-raw-fixed.mp4 ste-grounded-ep1-raw-fixed.mp4 --export resolve

Audacity + ffmpeg (gratis, più tecnico)

  1. Apri il WAV in Audacity → Analyze > Silence Finder per esportare una lista di timestamp dei silenzi
  2. Usa quei timestamp con ffmpeg per tagliare automaticamente i video
#
auto-editor.exe .\voci-grounded-ep1-raw-fixed.wav --margin "1s" --edit "audio:threshold=0.015" --stats

# cut
auto-editor.exe .\sam-combined.mp4 --margin "1s" --edit "audio:stream=1,threshold=0.015" --export resolve

# LA RICODIFICA E' NECESSARIA

# how to combine (senza ricodifica audio)
ffmpeg -i .\sam-grounded-ep1-raw-fixed.mp4 -i .\voci-grounded-ep1-raw-fixed.wav -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 copy -y sam-combined.mp4

# flusso
# raw -> fixed -> combined -> cut

auto-editor.exe .\sam-combined.mp4 --margin "5s" --edit "audio:stream=1,threshold=0.015" --export resolve

auto-editor.exe .\sam-combined.mp4 --margin "5s" --edit "audio:stream=1,threshold=0.015" --stats

#check
ffmpeg -i .\sam-combined.mp4 -map 0:2 -af volumedetect -f null -

# ffmpeg ha aggiunto la traccia al container ma non ha fatto qualcosa
ffmpeg -i .\sam-grounded-ep1-raw-fixed.mp4 -i .\voci-grounded-ep1-raw-fixed.wav -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac -y sam-combined.mp4

auto-editor.exe .\sam-combined.mp4 --margin "5s" --edit "audio:0.03,stream=1" --stats
auto-editor .\sam-combined.mp4 --margin "5s" --edit audio:0.05,stream=1 --stats

# https://auto-editor.com/ref/edit
auto-editor.exe .\sam-combined.mp4 --margin "5s" --edit "(audio 0.03 #:stream 1)" --stats

auto-editor.exe .\sam-combined.mp4 --margin "5s" --export resolve --edit "audio:stream=1,threshold=0.3%" --stats

auto-editor.exe sam-combined.mp4 --margin "5s" --export resolve --edit "audio:threshold=0.2%" --stats

# muxiamo l'audio nelle voci nel gameplay
ffmpeg -i sam.mp4 -i voci-fixed.wav -map 0:v -map 0:a -map 1:a -codec copy sam-combined.mp4

auto-editor.exe .\voci-grounded-ep1-raw-fixed.wav .\sam-grounded-ep1-raw-fixed.mp4 --margin "5s" --export resolve --edit "audio:threshold=0.2%" --stats

# test before cut, see also duration detected
auto-editor.exe .\voci-fixed.wav --stats --edit "audio:threshold=0.18%"

# e niente
ffmpeg -i voci-grounded-ep1-raw.mp3 -acodec pcm_s16le voci-fixed.wav
# ottiene info della track
ffprobe -i .\voci-grounded-ep1-raw-fixed.wav

auto-editor.exe .\voci-fixed.wav --export resolve --edit "audio:threshold=0.05%"

# edit is default based on audio
auto-editor.exe .\voci-grounded-ep1-raw-fixed.wav .\sam-grounded-ep1-raw-fixed.mp4 --margin "5s" --export resolve
  1. ✅ Sincronizzo gameplay 1, gameplay 2 e voce in DaVinci (manualmente visto che le 3 fonti sono desincronizzate)

  2. ✅ Esporto i 3 file trimmati (gameplay1.mp4, gameplay2.mp4, voce.mp4 o .wav) tutti con lo stesso in/out point, così restano sincronizzati

  3. ✅ Dai i 3 file ad auto-editor con --edit-based-on audio usando la traccia voce come reference — auto-editor genera i 3 XML/FCPXML

auto-editor gameplay1.mp4 gameplay2.mp4 voce.wav --edit-based-on audio audio:stream=0 --export resolve
  1. ✅ Importo i 3 XML in DaVinci che crea 3 timeline già tagliate

  2. ✅ Copio i clip dalle timeline di gameplay1 e gameplay2 nella timeline della voce (o crei una quarta timeline finale) per avere tutto insieme


  1. sincronizzare su davinci tutte le tracce -> File -> Export -> Timeline (FCP 7 XML V5 Files è il formato più compatibile e quello che TimeBolt riconosce meglio)
  2. porca di quella
# install python
pip install auto-editor
C:\Users\Sam\AppData\Local\Python\pythoncore-3.14-64\Scripts\auto-editor.exe --version
# aggiungere al PATH:
# C:\Users\Sam\AppData\Local\Python\pythoncore-3.14-64\Scripts
auto-editor.exe

# il mio registratore divide in chunk l'mp3 e auto-editor legge solo il primo chunk, bisogna unire tutto in un mp3 completo
# not working ffmpeg -i voci-grounded-ep1-raw.mp3 -acodec copy voci-fixed.mp3
ffmpeg -i voci-grounded-ep1-raw.mp3 -acodec pcm_s16le voci-fixed.wav

# preview edit
auto-editor.exe .\voci-fixed.wav --stats --edit "audio:threshold=0.05%"

# export xml
auto-editor.exe .\voci-fixed.wav --export resolve --edit "audio:threshold=0.05%" -o tagli-grounded-ep1.fcpxml
# timebolt plugin
https://timebolt-update-server.s3.amazonaws.com/TimeBoltResolveIntegration.lua
C:\Users\Sam\AppData\Roaming\Blackmagic Design\DaVinci Resolve\Support\Fusion\Scripts\Comp