Repository 32bit  Forum
Repository 64bit  Wiki

Mencoderprogress: differenze tra le versioni

Da Slacky.eu.
(Nuova pagina: Category:Script = Introduzione = Inizialmente avevo pensato di creare uno script che riuscisse ad estrapolare l'avanzamento delle conversioni video di ffmpeg per poter visualizza...)
 
 
(7 revisioni intermedie di un utente non mostrate)
Riga 1: Riga 1:
[[Category:Script]]
[[Category:Script]]
  +
  +
''For an english version of this page, please go [http://www.slacky.eu/wikislack/index.php?title=Mencoderprogress_%28en%29 here]''
= Introduzione =
= Introduzione =
Riga 7: Riga 9:
mencoder non necessiterebbe di un'interfaccia che elabori la percentuale di avanzamento dall'output prodotto dal programma stesso, dato che ne presenta già una di suo. Tuttavia, in alcuni casi, essa rimane sempre a 0% mentre l'avanzamento temporale (la posizione in secondi) funziona sempre.
mencoder non necessiterebbe di un'interfaccia che elabori la percentuale di avanzamento dall'output prodotto dal programma stesso, dato che ne presenta già una di suo. Tuttavia, in alcuni casi, essa rimane sempre a 0% mentre l'avanzamento temporale (la posizione in secondi) funziona sempre.
In vista di ciò ho prodotto il seguente script. Esso viene chiamato automaticamente dal mio altro script [http://www.slacky.eu/wikislack/index.php?title=ToZenAviMencoder toZenAviMplayer], anch'esso pubblicato qui su Wikislacky.
+
In vista di ciò ho prodotto il seguente script. Esso viene chiamato automaticamente dal mio altro script [http://www.slacky.eu/wikislack/index.php?title=ToZenAviMencoder toZenAviMencoder], anch'esso pubblicato qui su Wikislacky.
= Descrizione =
= Descrizione =
Questo script si pone come interfaccia per nascondere il normale output di mencoder su standard output (stdout), per mostrare al suo posto un avanzamento, espresso in percentuale. Se dialog è presente nel path, esso sarà usato. Altrimenti l'avanzamento verrà stampato a video tramite un normale echo.
Questo script si pone come interfaccia per nascondere il normale output di mencoder su standard output (stdout), per mostrare al suo posto un avanzamento, espresso in percentuale. Se dialog è presente nel path, esso sarà usato. Altrimenti l'avanzamento verrà stampato a video tramite un normale echo.
 
 
= Versione corrente =
= Versione corrente =
La versione corrente è la 1.00 del 30/09/2008.
+
La versione corrente è la 1.01 del 02/10/2008.
= Requisiti =
= Requisiti =
Riga 34: Riga 34:
; 634 : È la durata in secondi del filmato che si sta convertendo. Sono stato costretto a metterlo come parametro a riga di comando perché l'output di mencoder (al contrario di quello di ffmpeg) non include tale informazione, non appena si lancia una conversione. Se non specificato, il valore di default "9999999" viene utilizzato (non che abbia molto senso...).
; 634 : È la durata in secondi del filmato che si sta convertendo. Sono stato costretto a metterlo come parametro a riga di comando perché l'output di mencoder (al contrario di quello di ffmpeg) non include tale informazione, non appena si lancia una conversione. Se non specificato, il valore di default "9999999" viene utilizzato (non che abbia molto senso...).
; "Conversione di trallallero trallalà" : È il messaggio da visualizzare durante la conversione. Se non specificato, verrà visualizzato il messaggio "Converting video...".
; "Conversione di trallallero trallalà" : È il messaggio da visualizzare durante la conversione. Se non specificato, verrà visualizzato il messaggio "Converting video...".
  +
  +
'''UPDATE'''
  +
  +
Con l'aggiornamento alla versione 1.01 è stata inserita una nuova variabile configurabile dall'utente:
  +
; REFRESH_TIME : Indica ogni quanto tempo aggiornare la percentuale, in secondi. Se non impostato, il valore di default è 3 secondi.
Riga 42: Riga 47:
# Script per mostrare il progresso di una conversione operata da mencoder
# Script per mostrare il progresso di una conversione operata da mencoder
# Fabbricato per vossignori da 414N <414N chiocciolinainaina slacky PUNTO it>
# Fabbricato per vossignori da 414N <414N chiocciolinainaina slacky PUNTO it>
# 30/09/2008
+
# 02/09/2008
# Versione 1.0
+
# Versione 1.01
# Parametri:
# Parametri:
# (stdin) : output di mencoder in pipe
# (stdin) : output di mencoder in pipe
Riga 63: Riga 68:
PROGRESS=0
PROGRESS=0
  +
  +
# Intervallo di refresh della percentuale (per migliorare un po' la performance)
  +
# Espresso in secondi
  +
  +
REFRESH_TIME=${REFRESH_TIME:-3}
# Controllo della presenza di dialog nel path
# Controllo della presenza di dialog nel path
Riga 94: Riga 104:
print_progress 0
print_progress 0
while read -d $'\r' INFO
+
while read -e -d $'\r' INFO
do
do
ACTUAL_TIME=$(echo "$INFO" | awk -F's' '{gsub(/ */,"",$2); print $2}' | cut -d':' -f2 | awk '/^([1-9][0-9]*\.[0-9]*)$/')
ACTUAL_TIME=$(echo "$INFO" | awk -F's' '{gsub(/ */,"",$2); print $2}' | cut -d':' -f2 | awk '/^([1-9][0-9]*\.[0-9]*)$/')
Riga 104: Riga 114:
print_progress "$PROGRESS"
print_progress "$PROGRESS"
OLDPROGRESS="$PROGRESS"
OLDPROGRESS="$PROGRESS"
  +
read -t "$REFRESH_TIME"
fi
fi
fi
fi
Riga 128: Riga 139:
; 1.00 : versione iniziale dello script.
; 1.00 : versione iniziale dello script.
  +
; 1.01 : aggiunto un intervallo di refresh per migliorare un po' la performance.
= Feedback =
= Feedback =
Se avete suggerimenti/segnalazioni, per favore fiondatevi a scrivere un post [http://www.slacky.eu/forum/viewtopic.php?f=12&t=26143 qui].
+
Se avete suggerimenti/segnalazioni, per favore fiondatevi a scrivere un post [http://www.slacky.eu/forum/viewtopic.php?f=12&t=26147 qui].
414n
+
[mailto:414N_chiocciolinainaina_slacky_PUNTO_it 414n]

Versione attuale delle 09:26, 4 ott 2008


For an english version of this page, please go here

Indice

[modifica] Introduzione

Inizialmente avevo pensato di creare uno script che riuscisse ad estrapolare l'avanzamento delle conversioni video di ffmpeg per poter visualizzare una comoda percentuale al posto della posizione attuale in secondi all'interno del film (non proprio il massimo per dare un'idea dell'avanzamento). Dopo aver realizzato tale script (che verrà pubblicato prossimamente qui su Wikislacky) mi sono buttato nella realizzazione di un analogo script per mencoder.

mencoder non necessiterebbe di un'interfaccia che elabori la percentuale di avanzamento dall'output prodotto dal programma stesso, dato che ne presenta già una di suo. Tuttavia, in alcuni casi, essa rimane sempre a 0% mentre l'avanzamento temporale (la posizione in secondi) funziona sempre.

In vista di ciò ho prodotto il seguente script. Esso viene chiamato automaticamente dal mio altro script toZenAviMencoder, anch'esso pubblicato qui su Wikislacky.

[modifica] Descrizione

Questo script si pone come interfaccia per nascondere il normale output di mencoder su standard output (stdout), per mostrare al suo posto un avanzamento, espresso in percentuale. Se dialog è presente nel path, esso sarà usato. Altrimenti l'avanzamento verrà stampato a video tramite un normale echo.

[modifica] Versione corrente

La versione corrente è la 1.01 del 02/10/2008.

[modifica] Requisiti

GNU Bash 
Per eseguire lo script.
mencoder 
Per produrre l'output da elaborare.
awk 
Per processare/filtrare informazioni.

[modifica] Configurazione

Lo script deve essere lanciato in pipe con mencoder, in modo da catturarne lo standard output. Un esempio di uso è il seguente:

mencoder <parametri vari> | mencoderprogress.sh 634 "Conversione di trallallero trallalà"

dove:

634 
È la durata in secondi del filmato che si sta convertendo. Sono stato costretto a metterlo come parametro a riga di comando perché l'output di mencoder (al contrario di quello di ffmpeg) non include tale informazione, non appena si lancia una conversione. Se non specificato, il valore di default "9999999" viene utilizzato (non che abbia molto senso...).
"Conversione di trallallero trallalà" 
È il messaggio da visualizzare durante la conversione. Se non specificato, verrà visualizzato il messaggio "Converting video...".

UPDATE

Con l'aggiornamento alla versione 1.01 è stata inserita una nuova variabile configurabile dall'utente:

REFRESH_TIME 
Indica ogni quanto tempo aggiornare la percentuale, in secondi. Se non impostato, il valore di default è 3 secondi.


[modifica] Script

#!/bin/bash
#
# Script per mostrare il progresso di una conversione operata da mencoder
# Fabbricato per vossignori da 414N <414N chiocciolinainaina slacky PUNTO it>
# 02/09/2008
# Versione 1.01
# Parametri:
# (stdin) : output di mencoder in pipe
# $1 : Durata del filmato (in secondi)
# $2 : Messaggio da visualizzare

# Controllo argomenti

DURATION=${1:-"9999999"}


MESSAGE=${2:-"Converting video..."}

# Variabile che contiene il precedente valore di progresso calcolato. Viene usata per risparmiare stampate a video

OLDPROGRESS=0

# Variabile contenente il progresso attuale, calcolato di volta in volta

PROGRESS=0

# Intervallo di refresh della percentuale (per migliorare un po' la performance)
# Espresso in secondi

REFRESH_TIME=${REFRESH_TIME:-3}

# Controllo della presenza di dialog nel path

if [ -z "$USE_DIALOG" ]
then
	if [ `which dialog 2>/dev/null` = "" ]
	then
		USE_DIALOG=0
	else
		USE_DIALOG=1
	fi
fi

# Funzione per la stampa su schermo del progresso
#
# Parametri:
# $1 = Progresso attuale (intero)

function print_progress ()
{
	if [ "$USE_DIALOG" = 0 ]
	then
		echo -ne "$MESSAGE : $1%\r"
	else
		echo "$1" | dialog --title "mencoder video conversion" --gauge "$MESSAGE" 10 50
	fi
}


print_progress 0

while read -e -d $'\r' INFO
do
	ACTUAL_TIME=$(echo "$INFO" | awk -F's' '{gsub(/ */,"",$2); print $2}' | cut -d':' -f2 | awk '/^([1-9][0-9]*\.[0-9]*)$/')
	if [ $ACTUAL_TIME ]
	then 
		PROGRESS=$(echo "$ACTUAL_TIME $DURATION" | awk '{printf "%.0f\n",$1 / $2 * 100}')
		if [ "$PROGRESS" -ne "$OLDPROGRESS" ]
		then
			print_progress "$PROGRESS"
			OLDPROGRESS="$PROGRESS"
			read -t "$REFRESH_TIME"
		fi
	fi
done 
if [ "$PROGRESS" -eq 0 ]
then
	exit 1
else
	print_progress 100
fi

exit 0

[modifica] Installazione

È sufficiente inserire lo script all'interno del path e renderlo eseguibile. Consiglio di creare una cartella (ad esempio bin) all'interno della propria home e di inserirla nel PATH, andando a modificare/creare i file ~/.bashrc e ~/.bash_profile nel seguente modo:

export PATH+=":~/bin"

[modifica] Changelog

1.00 
versione iniziale dello script.
1.01 
aggiunto un intervallo di refresh per migliorare un po' la performance.

[modifica] Feedback

Se avete suggerimenti/segnalazioni, per favore fiondatevi a scrivere un post qui.

414n

Strumenti personali
Namespace

Varianti