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