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