User Tools

Site Tools


doc:appunti:linux:video:flowblade_howto

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:video:flowblade_howto [2026/07/22 12:33] niccolodoc:appunti:linux:video:flowblade_howto [2026/07/23 06:59] (current) – [Rendering memory leak] niccolo
Line 177: Line 177:
 </code> </code>
  
-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**.+Durante il rendering si è monitorato l'andamento della memoria libera (comando **free -h**si è generato un graficoSi 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?400|Flowblade rendering memory leak}}+{{.:flowblade:flowblade-rendering-memory-leak.png?480|Flowblade rendering memory leak}}
  
-Durante il rendering si è monitorato l'andamento della memoria libera (comando **free -h**) e si è generato un graficoSi vede che appena viene esaurita la RAM inizia ad esaurirsi anche lo swapfino a che il kernel effettua il kill del processo.+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**)
 + 
 +<code bash> 
 +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 
 +</code> 
 + 
 +Il parametro principale per controllare la qualità del video è **crf**; a valori inferiori corrisponde una migliore qualità 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 '2026-05_spagna.xml'
 +    -consumer 'avformat:2026-05_spagna.wav'
 +    video_off=1 \ 
 +    acodec=pcm_s16le 
 +</code> 
 + 
 +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 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 ===== ===== Impostazioni =====
doc/appunti/linux/video/flowblade_howto.1784716433.txt.gz · Last modified: by niccolo