doc:appunti:linux:video:flowblade_howto
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:linux:video:flowblade_howto [2026/07/22 12:10] – [How to re-frame a clip (position and scale)] niccolo | doc:appunti:linux:video:flowblade_howto [2026/07/23 06:59] (current) – [Rendering memory leak] niccolo | ||
|---|---|---|---|
| Line 152: | Line 152: | ||
| 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. | 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: | ||
| + | * **python3-mlt7** 1: | ||
| + | * **ffmpeg** 10: | ||
| + | * 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: | ||
| + | mems_allowed=0, | ||
| + | task_memcg=/ | ||
| + | app.slice/ | ||
| + | task=python3, | ||
| + | [82395.530097] Out of memory: Killed process 1937318 (python3) | ||
| + | total-vm: | ||
| + | UID:1000 pgtables: | ||
| + | </ | ||
| + | |||
| + | Durante il rendering si è monitorato l' | ||
| + | |||
| + | {{.: | ||
| + | |||
| + | Durante il rendering si hanno due processi in esecuzuione: | ||
| + | |||
| + | {{.: | ||
| + | |||
| + | 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**): | ||
| + | |||
| + | <code bash> | ||
| + | melt ' | ||
| + | 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: | ||
| + | |||
| + | <code bash> | ||
| + | melt ' | ||
| + | -consumer ' | ||
| + | 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:// | ||
| + | |||
| + | ^ f=matroska | ||
| + | ^ vcodec=libx264 | ||
| + | ^ vprofile=high | ||
| + | ^ preset=slow | ||
| + | ^ crf=18 | ||
| + | ^ video_off=1 | ||
| + | ^ vn=1 | Esclude il flusso video nell' | ||
| + | ^ acodec=aac | ||
| + | ^ ab=256k | ||
| ===== Impostazioni ===== | ===== Impostazioni ===== | ||
doc/appunti/linux/video/flowblade_howto.1784715007.txt.gz · Last modified: by niccolo
