Skip to content

Instantly share code, notes, and snippets.

@dclobato
Created December 30, 2022 18:31
Show Gist options
  • Save dclobato/39e2d1ab7798f2e071da5072bfdf27c5 to your computer and use it in GitHub Desktop.
Save dclobato/39e2d1ab7798f2e071da5072bfdf27c5 to your computer and use it in GitHub Desktop.
Script para converter, originalmente, o arquivos .MOV do iPhone para arquivos MP4 usando ffmpeg acelerado com CUDA e preservando as tags originais. No final, renomeia o arquivo para o formato `data-make-model.mp4`
#!/bin/bash
read -p "Qual extensao converter? " extensao
read -p "Arquivo com o resultado das conversoes? " saida
echo Trabalhando nos arquivos *.$extensao
echo `date` > $saida
find ./ -type f -iname "*.${extensao}" | while IFS= read -r video; do
echo "- Processando video ${video}"
ffmpeg -hide_banner -loglevel error -nostdin -hwaccel cuda -hwaccel_output_format cuda -i "${video}" -movflags use_metadata_tags -c:v hevc_nvenc -c:a aac -y "${video%.*}".mp4
if [ $? -eq 0 ]; then
echo " Conversao com sucesso, entao copiando tags..."
exiftool -ee -tagsfromfile "${video}" -overwrite_original "${video%.*}".mp4 > /dev/null
if [ $? -eq 0 ]; then
if exiftool -if '!$make or !$model' -dummy "${video%.*}.mp4" > /dev/null; then
echo " !! O arquivo nao tem as tags necessarias para identificar a camera. Renomeie de forma manual"
continue
fi
if exiftool -if '$mediacreatedate' "${video%.*}".mp4 > /dev/null; then
exiftool '-fileName<${MediaCreateDate}_${make;tr/ /_/;tr/\//-/;s/__+/_/g}-${model;tr/ /_/;tr/\//-/;s/__+/_/g}.mp4' \
'-filemodifydate<MediaCreateDate' '-FileCreateDate<MediaCreateDate' '-ModifyDate<MediaCreateDate' \
-d '%Y%m%dT%H%M%S%%-2c' -overwrite_original -api largefilesupport=1 \
"${video%.*}".mp4 > /dev/null
else
if exiftool -if '$datetimeoriginal' -dummy "${video%.*}".mp4 > /dev/null; then
exiftool '-fileName<${DateTimeOriginal}_${make;tr/ /_/;tr/\//-/;s/__+/_/g}-${model;tr/ /_/;tr/\//-/;s/__+/_/g}.mp4' \
'-filemodifydate<DateTimeOriginal' '-FileCreateDate<DateTimeOriginal' '-ModifyDate<DateTimeOriginal' \
'-mediacreatedate<DateTimeOriginal' \
-d '%Y%m%dT%H%M%S%%-2c' -overwrite_original -api largefilesupport=1 \
"${video%.*}".mp4 > /dev/null
else
echo " !! Nao temos informacao de data para renomear o arquivo. Renomeie de forma manual"
continue
fi
fi
else
echo " !! Nao foi possivel copiar as tags do arquivo original. Faca a marcacao de forma manual"
continue
fi
echo " Arquivo convertido com sucesso. Nome do arquivo original armazenado na lista de arquivos"
echo "${video}" >> $saida
else
echo "Falha na conversao. Abortando o laco.."
break
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment