R.     Codice
1#!/bin/bash
2#appunti per scrittura time su video
3# Bold
4BBlack='e[1;30m' # Nero
5BRed='e[1;31m' # Rosso
6BGreen='e[1;32m' # Verde
7BYellow='e[1;33m' # Giallo
8BBlue='e[1;34m' # Blu
9BPurple='e[1;35m' # Viola
10BCyan='e[1;36m' # Ciano
11BWhite='e[1;37m' # Bianco
12
13Color_Off='e[0m' # Text Reset
14reset_console="E[37;40m" #biancoBold
15echo -e $BRed'PROGRAMMA shell PER IMMISSIONE counterdown a fine video'
16if [[ "$1" == "" ]]; then
17echo -e $BWhite'Titolo video '$BYellow
18read titolo
19else
20titolo=$1
21fi
22dur=$( ffprobe -i $titolo -show_entries format=duration -v quiet -of csv=p=0 )
23echo -e $BYellow"Durata "$BWhite$titolo"= "$BGreen$dur
24
25#tento di dedurre quando è stato girato il video
26timec=$(ffprobe -i $titolo -show_entries format_tags=creation_time -v quiet -of default=noprint_wrappers=1 )
27echo -e $BWhite"Metadati creazione video "$BYellow$timec
28if [[ "$timec" == "" ]] ; then
29#costruzione nome output
30titolipos=`expr index "${titolo}" "."`
31titolipos=$(( $titolipos-1 ))
32nuovoct=${titolo:0:$titolipos}
33estensione=${titolo:$titolipos}
34outputct=$nuovoct'c_t'$estensione
35echo -e $BWhite"ATTENZIONE! Metadata tag "$BYellow"'creation_time' è vuoto."$BWhite"
36 Digitare "$BYellow"Y"$BWhite" se si vuole inserire un tempo di creazione specifico,
37 digitare "$BYellow"N "$BWhite"se si accetta di inserire il tempo di sistema come tag"$BYellow
38read scelta
39if [[ "$scelta" == "y" ]] || [[ "$scelta" == "Y" ]]; then
40echo -e $BWhite"Digitare data creazione nel seguente formato:
41 "$BYellow"YYYY-mm-ddTHH:MM:SS.000000Z "$BWhite"(la T intermedia e
42 la Z finale devono essere digitate maiuscole, come i separatori)"
43read creationstring
44
45else
46data=$(date '+%Y-%m-%d')
47echo -e $BWhite"data= "$BYellow$data
48tempo=$(date '+%H:%M:%S')".000000Z"
49echo -e $BWhite"Ora= "$BYellow$tempo
50timec=$data"T"$tempo
51echo -e $BWhite"Tag creation_time= "$BYellow$timec
52creationstring=$timec
53timec="TAG:creation_time="$creationstring
54fi
55echo -e $BWhite"Inserimento metadata..."
56ffmpeg -y -i $titolo -metadata creation_time="$creationstring" -map 0 -c copy $outputct
57rm $titolo
58mv $outputct $titolo
59fi
60datac=${timec:18:10}
61orac=${timec:29:9}
62ore=${orac:0:2}
63if [[ ${ore:0:1} == "0" ]] ; then
64ore=${ore:1:1}
65fi
66min=${orac:3:2}
67if [[ ${min:0:1} == "0" ]] ; then
68min=${min:1:1}
69fi
70sec=${orac:6:2}
71if [[ ${sec:0:1} == "0" ]] ; then
72sec=${sec:1:1}
73fi
74echo -e $BWhite"Data creazione "$BYellow$datac$BWhite" ore: "$BYellow$orac
75echo -e $BWhite"ore:"$BYellow$ore$BWhite" minuti:"$BYellow$min$BWhite" secondi:"$BYellow$sec$BWhite
76timestamp=$(($ore*60*60+$min*60+$sec))
77echo -e $BWhite" Timestamp:"$BYellow$timestamp
78#-----------------
79#costruzione nome output
80titolipos=`expr index "${titolo}" "."`
81titolipos=$(( $titolipos-1 ))
82nuovo=${titolo:0:$titolipos}
83estensione=${titolo:$titolipos}
84output=$nuovo'countdown'$estensione
85
86#-----------------
87echo -e $BWhite"Famiglia font carattere?
88 "$BGreen"(Scegliere nella cartella /usr/share/fonts/TTF/)
89 "$BWhite"(digitare solo il nome comprensivo di estensione .ttf)
90 Il carattere numerico digitale si trova in 'ani.ttf'"$BYellow
91read fontfamily
92echo -e $BWhite"Grandezza carattere?"$BYellow
93read fsz
94bsz=$(( $fsz/4 ))
95bsz=${bsz%.*}
96echo -e $BWhite"Colore carattere?
97 "$BGreen"(nomeminuscolo o esa-decimale)"$BYellow
98read fontcolor
99echo -e $BWhite"Colore sfondo?
100 "$BGreen"(nomeminuscolo o esa-decimale)"$BYellow
101read boxcolor
102echo -e $BWhite"Indice di traparenza?"$BYellow" (1 decimale)$BWhite
103Valori intermedi tra 0.0 (totale trasparenza) e
1041.0 (totale opacità)"$BYellow
105read trasp
106echo -e $BWhite"Si desidera aggiungere testo prima e dopo
107il contatore?
108"$BYellow"1) Ancora 00:00:01 ...a fine video!
1092) "$BWhite"Nessun testo, solo contatore
110"$BYellow" 3) Testo personalizzato
111"$BWhite"Scegliere 1-2-3"$BYellow
112read sceltat
113case "$sceltat" in
114"1")
115iniziale=" Ancora... "
116finale=" ... a fine video!"
117;;
118"2")
119iniziale=""
120finale=""
121;;
122"3")
123echo -e $BWhite"Digitare stringa iniziale o INVIO"$BYellow
124read iniziale
125echo -e $BWhite"Digitare stringa finale o INVIO"$BYellow
126read finale
127;;
128*)
129iniziale=""
130finale=""
131;;
132esac
133echo -e $BWhite"Posizione verticale Y inizio scrittura counter
134 (in senso orizzontale viene posto a metà video)?"$BYellow
135read y
136ffmpeg -i $titolo -filter_complex "[0:v]drawtext=fontfile='/usr/share/fonts/TTF/"$fontfamily"':
137text='""$iniziale""%{eif:("$dur"-t)/3600:d:2}:
138%{eif:mod(("$dur"-t)/60,60):d:2}:%{eif:mod(("$dur"-t),60):d:2}:%{eif:100*mod(("$dur"-t),1):d:2}'
139""$finale""'
140: x=(w-text_w)/2:y="$y":fontsize="$fsz":alpha="$trasp":fontcolor="$fontcolor":box=1:
141boxcolor="$boxcolor"@1:boxborderw="$bsz"' [videotimer]"
142-map "[videotimer]" -map 0:a -movflags use_metadata_tags -map_metadata 0 $output
143
144dur=$( ffprobe -i $output -show_entries format=duration -v quiet -of csv=p=0 )
145echo -e $BYellow"Durata "$BWhite$output"= "$BGreen$dur
146
147exit 0
148
149exit 0
150
151