====== Flowblade HowTo ======
===== Problemi riscontrati =====
Abbiamo provato la **versione 2.22** su Debian 13 Trixie. Il programma sembra abbastanza stabile, ma a volte **il comportamento della timeline si corrompe**: la selezione (con il click sinistro) di alcune clip non funziona, lo spostamento della playhead con i tasti Up e Down smette di funzionare e anche lo zoom con Mouse Middle Click non produce i risultati attesi. Chiudendo e riaprendo il progetto sembra che risolva il problema.
Tale problema è stato riscontrato ad esempio provando il comando **Overwrite Range** senza aver definito un range sulla timeline; in tal caso l'overwrite avviene all'inizio della sequenza e spesso inizia il comportamento erratico della timeline.
===== Riferimenti =====
* **[[https://jliljebl.github.io/flowblade/webhelp/kbshortcuts.html|Flowblade Default keyboard Shortcuts]]**
===== Basic usage =====
^ Monitor ^^^
| {{.:flowblade:icons:display-timeline-clip-on-monitor.png?direct&100|}} | Display Timeline / Clip on Monitor | Seleziona cosa visualizzare sul Monitor: la sequenza in lavorazione sulla Timeline oppure la clip scelta dai Media. |
^ Clip Delete ^^^
| {{.:flowblade:icons:splice-out-delete.png?direct&100|}} | Splice Out - Delete | Elimina le clip selezionate dalla timeline, le clip successive si spostano a sinistra riducendo la lunghezza totale della sequenza. |
| {{.:flowblade:icons:lift-control-delete.png?direct&100|}} | Lift - Control + Delete | Elimina la clip selezionata dalla timeline lasciando uno spazio vuoto. La lunghezza totale della sequenza resta inalterata. |
| {{.:flowblade:icons:ripple-delete.png?direct&100|}} | Ripple Delete | Elimina le clip selezionate dalla timeline in modo analogo al comando //Splice Out//, ma in questo caso le clip presenti su altre tracce si spostano a sinistra per mantenere la sincronizzazione. |
| {{.:flowblade:icons:range-delete.png?direct&100|}} | Range Delete | Elimina dalla sequenza il range selezionato (con i tasti I e O) sulla timeline effettuando i tagli necessari alle clip esistenti. La lunghezza complessiva della sequenza si riduce. |
^ Clip Insert ^^^
| {{.:flowblade:icons:overwrite-range.png?direct&100|}} | Overwrite Range | Sostituisce il range selezionato (con i tasti I e O) sulla timeline con la selezione dal monitor. La selezione deve essere uguale o più lunga del range da sostituire. Effettua i tagli necessari alle clip esistenti che vengono sovrascritte. La lunghezza totale della timeline non cambia. |
| {{.:flowblade:icons:overwrite-clip.png?direct&100|}} | Overwrite Clip - T | Sostituisce la clip selezionata nella timeline con la selezione dal monitor. La selezione deve essere uguale o più lunga della clip da sostituire. Il pezzo inserito sarà tagliato in modo che la lunghezza totale della timeline non cambi. |
| {{.:flowblade:icons:insert-clip.png?direct&100|}} | Insert Clip - Y | Inserisce la parte selezionata della clip sul monitor nella timeline nel punto di taglio più vicino alla playhead, spostando eventualmente a destra le clip successive. |
| {{.:flowblade:icons:append-clip.png?direct&100|}} | Append Clip - U | Aggiunge la selezione dal monitor alla timeline, dopo le clip esistenti. |
^ Edit Tools ^^^
| {{.:flowblade:icons:tool-1-move.png?direct&120|}} | Move - 1 | Strumento predefinito: **sposta** le clip selezionate sulla timeline, una eventuale sovrapposizione taglia le clip sottostanti lasciando inalterata la lunghezza della sequenza. Trascinando all'estremità di una clip esegue il **Trim**: allunga o accorcia la lunghezza variando di conseguenza la lunghezza complessiva della sequenza. |
| {{.:flowblade:icons:tool-2-multitrim.png?direct&120|}} | Multitrim - 2 | Svolge **tre funzioni** diverse sulle clip della timeline a seconda del punto di click. Sul punto di taglio tra due clip => **Roll**: sposta il punto di taglio lasciando inalterata la lunghezza complessiva della sequenza. Al centro di una clip => **Slip**: fa scorrere il contenuto della clip a destra o sinistra lasciando inalterata la sua durata. All'estremità di una clip => **Trim**: sposta il punto di inizio o di fine modificando la lunghezza complessiva della sequenza. |
| {{.:flowblade:icons:tool-3-spacer.png?direct&120|}} | Spacer - 3 | Trascinando una clip verso destra sulla timeline **inserisce uno spazio vuoto** alla sua sinistra, tutte le clip successive vengono spostate anch'esse. È possibile trascinare verso sinistra solo se vi è dello spazio vuoto da ridurre. |
| {{.:flowblade:icons:tool-4-insert.png?direct&120|}} | Insert - 4 | Consente di **riordinare** le clip sulla timeline: trascinando (a partire dal centro) una clip è possibile spostarla in un altro punto di taglio che viene evidenziato da una freccia gialla. Essendo un riordinamento la lunghezza delle clip e della sequenza complessiva non cambia. |
| {{.:flowblade:icons:tool-5-cut.png?direct&120|}} | Cut - 5 | Con un click del mouse effettua il **taglio** di una clip sulla timeline. Il taglio avviene nel punto di click, a differenza del tasto X che effettua il taglio al punto della playhead. |
| {{.:flowblade:icons:tool-6-keyframe.png?direct&120|}} | Keyframe - 6 | Facendo click su una clip della timeline viene aperto il **keyframe tool** per regolare i filtri applicati alla clip. Se non vi è alcun filtro attivo sulla clip viene attivato e mostrato automaticamente quello del volume audio. FIXME. |
==== Changing current frame ====
{{.:flowblade:flowblade-change-frame.png?direct&640|Flowblade - Changing current frame}}
==== Zoom and pan the timeline ====
{{.:flowblade:flowblade-zoom-timeline.png?direct&640|Flowblade - Timeline zoom and pan}}
===== View the timeline or the clip in the Monitor Panel =====
In the default view, the top-right part of the windows is the **Monitor** panel. The monitor is used to view the **timeline** of the working sequence or the **clip** choosen from the **Media** panel. Two buttons are provided to switch from **Display Timeline** to **Clip** mode:
{{.:flowblade:flowblade-timeline-clip-monitor.png?direct&280|Display Timeline / Clip to Monitor}}
===== Shortcut keys =====
^ Keys in Monitor Panel ^^
^ Left / Right | Move to previous / next frame. |
^ Shift+Left / Shift+Right | Move to previous / next 10 frames. |
^ I / O | Add In and Out markers for clip cut |
^ Alt+I / Alt+O | Go to In or Out markers |
^ Alt+K | Remove In and Out markers |
^ U | Insert the clip cutout at the end of the timeline |
^ Y | Insert the clip cutout in the timeline before the clip under the playhead |
^ T | Replace the clip selected in the timeline with the clip cutout from the Monitor. The cutout must be larger than the clip to be replaced. |
^ Keys in Timeline panel ^^
^ Left / Right | Move to previous / next frame. |
^ Shift+Left / Shift+Right | Move to previous / next 10 frames. |
^ Up / Down | Move to next or previous cut on topmost active track. |
^ Mouse left-click | Select a clip |
^ Ctrl+Mouse left-click | Select last clip of a range |
^ Mouse center-click | Zoom fit. |
^ Mouse wheel | Zoom timeline in / out. |
^ Ctrl+Mouse wheel | Pan timeline left / right. |
^ X | Cut the clip at playhead. |
^ I / O | Add In and Out markers for clip cut |
^ Alt+I / Alt+O | Go to In or Out markers |
^ Alt+K | Remove In and Out markers |
===== Keyframe Tool and Keyframe Editor =====
Per regolare gli effetti di un filtro su una clip si ricorre all'uso di //keyframe//, cioè determinati fotogrammi della clip per i quali si indica il valore assunto dal filtro. Ad esempio un effetto fade-in dal nero avrà un keyframe sul primo fotogramma dove il valore del filtro è zero (fotogramma tutto nero) e un secondo keyframe sul fotogramma 60 in cui il valore è 100 (fotogramma completamente visibile); in questo modo - se la clip è a 30 FPS - si ottiene un effetto fade-in della durata di due secondi.
Esistono **due strumenti** per manipolare i keyframe dei filtri: il **Keyframe Editor** che si attiva nell'**Edit Panel** e il **Keyframe Tool** che si attiva sulla **Timeline**.
Per visualizzare il Keyframe Editor si fa doppio clik su una clip con il tool predefinito //Move//. L'editor si presenta vuoto se la clip non ha filtri attivi (//Clip Has No Filters//); con il pulsante **+** in basso si possono aggiungere filtri video e audio. In questo esempio si sono aggiunti il filtro audio **Volume** e il filtro video **Fade To Black In / Out**:
{{.:flowblade:flowblade-keyframe-editor.png?direct&480|Keyframe Editor in the Edit Panel}}
Ogni filtro ha i sui keyframe rappresentati dai piccoli rombi sulla linea azzurra. Con gli appositi pulsanti è possibile aggiungerli, eliminarli, spostarsi su di essi, muoverli a destra e sinistra, ecc. Con lo slider è possibile modificare il valore assunto dal filtro nel keyframe selezionato. Impostando un valore del filtro con lo slider, l'editor automaticamente aggiungerà un keyframe sul fotogramma corrente.
L'editor e ogni filtro aggiunto ha il proprio //Hamburger Menu//. Dall'//Hamburger Menu// del filtro => //Open in Keyframe Tool// è possibile attivare la visualizzazione del **Keyframe Tool** sopra la clip nella timeline:
{{.:flowblade:flowblade-keyframe-tool.png?direct&480|The Keyframe Tool over the Timeline}}
Il tool visualizza il valore assunto dal filtro come un grafico sulla scala del tempo; i keyframe sono punti che possono essere spostati sugli assi X e Y per modificare la posizione temporale e il valore assunto.
Il Keyframe Tool viene attivato anche con un singolo click sulla clip quando si usa l'edit tool //Keyframe// invece del predefinito //Move//. In tal caso, se la clip non ha alcun effetto attivo, viene aggiunto automaticamente e visualizzato il filtro audio Volume. Dall'Hamburger Menu del tool è possibile selezionare quale filtro viene visualizzato nel tool stesso (ogni clip può avere uno o più filtri attivi) ed eventualmente passare alla visualizzazione nel Keyframe Editor nel pannello.
===== How to add fade-in/fade-out effects on both video and audio =====
* Click the **Media** panel in the top-center section of the window, right-click to **load the raw videos** into the panel.
* Double click the original video: it will be loaded into the **Monitor** (top-right section of the window).
* Play the video in the monitor and select the **IN** and **OUT** cut points using key I and O.
* Click the **Append Clip** button (or press the U key) to insert the selected clip into the **timeline** (the bottom-center part of the window).
* Repeat the above two steps to add **all the required clips** into the timeline.
* Add the **fade-in/fade-out** effect for both video and audio on each clip:
* Double-click the clip into the timeline: the **Edit** panel will be displayed in the top-center section.
* Using the **+** button at the bottom of the Edit panel add two effects:
* **Fade** => **Fade to Black In/Out**
* **Audio** => **Volume**
* The **two effects** will be listed into the Edit panel.
* Click the **Hamburger** menu button next to the **Fade to Black In/Out** filter and choose **Open in Keyframe Tool**.
* A **graph of the filter** will be displayed over the clip into the timeline. Here you can add handle points (Flowblade calls them //keyframes//) and move them to change the shape of the line. The fade-in effect is obtained with a line starting from zero and rising to 100 e.g. in 2 seconds. A fade-out is obtained with the line starting from 100 and going down to zero.
* Click anywhere on the timeline to **close the Keyframe Tool**.
* Similarly click the **Hamburger** button next the **Volume** and **Open in Keyframe Tool** to set the fade-in fade-out for the audio. Notice that normal volume is **0 dB** and silence is **-70 dB** on the scale.
* Clone the filters settings to other clips: FIXME
=== Removing unwanterd keyframes (handle points) ===
In the Keyframe Tool you may accidentally add a keyframe (handle point) that you want to remove. Close the Keyframe Tool clicking anywhere on the timeline and double click the clip so the **Edit** panel is shown. Here you can jump over each keyframe added to the filter using the buttons **Previous keyframe** and **Next Keyframe**. When you are over the unwanted one, click **Delete Keyframe** button (the minus).
=== Picuters ===
The **Edit Panel Keyframe Editor** with two filters added: the video **Fade to Black In/Out** and the audio **Volume**:
{{.:flowblade:flowblade-edit-panel-video-fade-in-fade-out-audio-volume.png?direct&400|}}
The **Keyframe Tool** used on the **Fade to Black In/Out** filter and the audio **Volume** filter respectively:
{{.:flowblade:flowblade-timeline-video-fade-in-fade-out-keyframe-tool.png?direct&400|Keyframe Tool on the Fade to Black In/Out filter}}
{{.:flowblade:flowblade-timeline-audio-volume-keyframe-tool.png?direct&400|Keyframe Tool on the Volume filter}}
===== How to re-frame a clip (position and scale) =====
Con un doppio click su una clip nella timeline si apre l'**Edit Panel** che mostra inizialmente l'assenza di filtri:
{{.:flowblade:flowblade-no-filter.png?direct&360|Clip Has No Filters}}
Con un click sull'icona **%%+%%** nell'angolo in basso a sinistra dell'Edit Panel si aggiunge un filtro di tipo **Transform** => **Position Scale**.
{{.:flowblade:flowblade-filter-position-scale.png?direct&360|}}
L'opzione più semplice è quella di **non aggiungere keyframe**, cioè le impostazioni del filtro saranno uguali per tutta la durata della clip.
Conviene disabilitare il **Distort** in modo che l'immagine mantenga il corretto rapporto larghezza altezza. L'**area grigia** rappresenta la zona che sarà visibile nel rendering finale, il **rettangolo con il bordo nero** e i punti di controllo rappresenta la posizione e la dimesione dell'immagine originale. Il risultato del filtro viene mostrato nel **Monitor Panel**.
Per modificare il frame si può usare il mouse sull'anteprima del filtro oppure - per un posizionamento più preciso - si possono usare i tasti freccia:
* **Tasti freccia**: sposta l'origine di 8 pixel nelle quattro direzioni.
* **Shift + tasti freccia**: modifica la dimensione dell'immagine originale di 8 pixel per volta.
È possible anche **immettere da tastiera i valori numerici** di posizione e dimensione, basta avere l'accortezza di **premere invio** dopo aver digitato i numero nella casella. I parametri del filtro sono l'offset a cui spostare l'angolo in alto a sinistra della clip e la nuova dimensione. Solitamente l'offset è negativo in quanto la clip viene ingrandita e spostata verso l'alto a sinistra (X e Y negativi).
Il play di una clip su cui siano stati applicati uno o più filtri è molto oneroso e potrebbe non avvenire in tempo reale su una CPU non abbastanza performante.
===== Rendering memory leak =====
Abbiamo sperimentato un **memory leak** durante il rendering finale di un video. Queste le condizioni in cui si è verificato:
* **flowblade** 1:2.22.1.1-dmo0+deb13u1 da %%https://www.deb-multimedia.org%% trixie/main
* **python3-mlt7** 1:7.32.0-dmo1 da %%https://www.deb-multimedia.org%% trixie/main
* **ffmpeg** 10:7.1.3-dmo1+deb13u1 da %%https://www.deb-multimedia.org%% trixie/main
* Profilo output **2.5K QHD 1440p 59.94 fps** (2560x1440).
* Durata del video **37 minuti**.
* CPU Intel Core i5-7200U, **16 Gb RAM**.
Il processo di rendering terminava intorno al 10%, con il seguente errore in **dmesg**:
[82395.529730] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,
mems_allowed=0,global_oom,
task_memcg=/user.slice/user-1000.slice/user@1000.service/
app.slice/app-org.kde.konsole-2921.scope,
task=python3,pid=1937318,uid=1000
[82395.530097] Out of memory: Killed process 1937318 (python3)
total-vm:25535832kB, anon-rss:14339756kB, file-rss:7212kB, shmem-rss:0kB,
UID:1000 pgtables:46500kB oom_score_adj:0
Durante il rendering si è monitorato l'andamento della memoria libera (comando **free -h**) e si è generato un grafico. Si vede che appena viene esaurita la RAM inizia ad esaurirsi anche lo swap, fino a che il kernel effettua il kill del processo:
{{.:flowblade:flowblade-rendering-memory-leak.png?480|Flowblade rendering memory leak}}
Durante il rendering si hanno due processi in esecuzuione: **flowblade** e **flowbladesinglerender**. È il secondo che esaurisce la memoria. Si tratta del processo che esegue il motore di rendering MLT seguendo il binding **python** => **python3-mlt7** => **libmlt-7-7**:
{{.:flowblade:flowblade-memory-leak-processes.png?480|Flowblade rendering processes memory leak}}
Come workaround del problema è stato possibile esportare il progetto in formato **MLT XLS** (//File// => //Export// => //MLT XML//) e quindi eseguire il rendering da riga di comando con **melt** (installato dal pacchetto **melt7**):
melt '2026-05_spagna.xml' -consumer 'avformat:2026-05_spagna.mkv' \
f=matroska \
acodec=aac \
ab=256k \
preset=slow \
vcodec=libx264 \
threads=0 \
vprofile=high \
crf=18
Il parametro principale per controllare la qualità del video è **crf**; a valori inferiori corrisponde una migliore qualità e un bitrare maggiore. Il valore predefinito per il codec x264 è 23, un valore di 18 dovrebbe corrispondere ad una compressione con perdita di qualità visivamente non percettibile. Nel nostro caso (video **2.7K@60**) si è ottenuto un bitrate variabile fra i **43** e i **60 Mb/s**.
È possibile effettuare il rendering della sola traccia audio, evitando la codifica del video che è estremamente onerosa per la CPU:
melt '2026-05_spagna.xml' \
-consumer 'avformat:2026-05_spagna.wav' \
video_off=1 \
acodec=pcm_s16le
Questi alcuni parametri utili per **melt** quando si utilizza il //consumer avformat// (codifica tramite la libreria **ffmpeg**). La documentazione completa è su **[[https://www.mltframework.org/plugins/ConsumerAvformat/|www.mltframework.org]]**, i paraemtri per il codec H.264 di ffmpeg sono documentati su **[[https://trac.ffmpeg.org/wiki/Encode/H.264|trac.ffmpeg.org]]**.
^ f=matroska | Formato del container prodotto: mp4, matroska, ipod, ... |
^ vcodec=libx264 | Seleziona il codec video H.264. |
^ vprofile=high | Il profilo definisce il set di funzionalità, algoritmi e strumenti di compressione che l'encoder H.264 può utilizzare. Serve a garantire la compatibilità del video con i dispositivi di riproduzione. Valori possibili: //baseline//, //main//, //high//, //high10//, ... Alcuni bitrate più elevati richiedono profili più elevati. |
^ preset=slow | Determina la velocità di codifica e l'efficienza della compressione del codec H.264: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow. |
^ crf=18 | Constant Rate Factor, definisce la qualità visiva percepita che si desidera ottenere nel video. Valori più bassi determinano una migliore qualità. 18 visivamente senza perdita (adatto all'archiviazione); 23 valore predefinito per x264; 28 buono per lo streaming. |
^ video_off=1 | Non processa il flusso video, utile ad esempio per effettuare la codifica del solo audio. |
^ vn=1 | Esclude il flusso video nell'output, ma il video viene comunque elaborato. |
^ acodec=aac | Codec audio per l'output aac, pcm_s16le, ... |
^ ab=256k | Bitrate per il flusso audio. |
===== Impostazioni =====
* View => Monitor Playback Interpolation => **Nearest Neighbour (fast)**
* Edit => Preferences => **Warning on Disk Cache Size**