Convertire video in AVI da Terminale con avidemux e ffmpeg

Un po' di conversioni di file video in formato AVI usando i pacchetti avidemux2_cli e ffmpeg.

Con le attuali impostazioni, il file bash va creato nella stessa direcotry dove si trovano i file da convertire.
Lo script crea una lista cercando tutti i file con estensione AVI, MPG e WEBM e li converte posizionando i nuovi file nella sottodirectory "convertiti".

Cambiando i parametri della riga di comando ovviamente è possibile cambiare tali impostazioni.


Listato del file bash:

#!/bin/bash
# Converte una lista di file in AVI usando avidemux2_cli

VAR="files.txt"
ls ./*.webm ./*.avi ./*.mpg | sort > $VAR
cat $VAR | while read line; do
INPUT=$(echo ${line})
NOMEFILE_COMPLETO=${line##*/}
NOMEFILE=${NOMEFILE_COMPLETO%\.*}
NOMEFILE_ESTENSIONE=${NOMEFILE_COMPLETO##*.} avidemux2_cli --nogui --force-alt-h264 --autoindex --load "$INPUT" --audio-bitrate 192 --audio-codec MP3 --video-codec Xvid --video-conf 2pass=350 --output-format AVI --save "./convertiti/$NOMEFILE.avi" --quit done rm $VAR

 

--audio-bitrate 192 si riferisce al formato audio di uscita, basta sostituire 192 ed impostare i bitrate desiderati.
--audio-codec MP3 indica di convertire il formato audio in MP3.
--video-codec Xvid indica di convertire il file usando il codec Xvid.
--video-conf 2pass=350 indica la dimensione finale in MB riservata al video (sarà superiore in quanto verrà aggiunta la componente audio)

Ho notato che se le misure del file video non sono multiple di 8 (sia in orizzontale che in verticale), Avidemux chiede se continuare o meno, interrompendo così lo script dato che ci troviamo all'interno di esso e non riusciamo ad interagire.
Effettuando delle ricerche, sembra vi sia un modo per interagire automaticamente con uno script bash semplicemente rispondendo YES o NO quando Avidemux chiede se continuare lo script o meno, ma dopo qualche prova con alcuni errori ho sospeso...
Nel caso, quindi, vi sia da effettuare un CROP (ritaglio) del video per riportare le misure "larghezza" e "altezza" a multipli di 8, si dovrà procedere aggiungendo un filtro.

Per inserire i filtri ho usato l'opzione --run nomescript.js
Non so se vi siano metodi meno "laboriosi" e più "command line" ma mi sono fermato qui con le ricerche per motivi di tempo e voglia! tongue-out

Ora, bisogna creare uno script che contenga i filtri che ci interessano. Senza immergermi in ulteriori manuali ho preferito aprire il video normalmente con Avidemux, impostare codec, audio, filtri ecc e dal menu FILE ho scelto la voce SALVA PROGETTO CON NOME... a questo punto dare un nome con estensione .js al file e salvare.

Aprendo il file con un editor di testo si potrà notare chiaramente la riga relativa allo script, ad esempio per il filtro CROP
app.video.addFilter("crop","left=0","right=2","top=2","bottom=4");

oppure per il filtro High Quality Denoise 3D
app.video.addFilter("mphqdenoise3d","param1=2,000000","param2=1,000000","param3=2,000000");

oppure per il ridimensionamento
app.video.addFilter("resize","w=624","h=350","algo=2");

e così via.

A questo punto basta togliere tutte le sezioni che "non servono" da tale script, in quanto già impostate nella riga di comando del file bash all'inizio, come ad esempio:
//** Video **
//** Postproc **
//** Video Codec conf **
//** Audio **

e lasciare ovviamente la sezione
//** Filters **

e salvare il file.
Abbiamo così creato uno script che contiene solo le direttive relative al filtro, in quanto tutto il resto lo abbiamo già inserito all'interno della riga di comando del file bash.
Basterà ora richiamare tale file script come descritto sopra con l'opzione --run nomescript.js ed il filtro verrà applicato.

 

Usando ffmpeg invece, ho usato il seguente comando:

ffmpeg -i "$INPUT" -vcodec libx264 -cpu-used 2 -acodec libmp3lame -b:a 192k "./convertiti/$OUTPUT"


Per effettuare un CROP al file, basta aggiungere al comando l'opzione "-vf crop=iw-2:ih-0".

Dove iw sono i pixel relativi alla dimensione orizzontale ed ih si riferisce alla verticale.

Per aggiungere anche il filtro "High Quality Denoise 3D" per ridurre il rumore, serve l'aggiunta dell'opzione "-vf hqdn3d=2:1:2".
Al posto di 2:1:2 si può impostare il filtro in modo diverso... qui rimando alla lettura del manuale.

 

FINE!

 

Stampa Email