scripts/varios/ksh/merge-video.ksh

72 lines
2.0 KiB
Bash
Executable File

#!/bin/ksh
#
# NOTA: este script aún está en fase de pruebas
# v0.3 - 20/09/2023
#
# Convertir audio ogg a aac
# ffmpeg -i input.ogg -strict experimental -acodec aac output.aac
#
# Añadir audio a video
# ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a copy videoconaudio.mp4
#
# Cortar video
# Con -ss estoy indicando que tome el video a partir del minuto 00:05:10 y luego
# con -to 00:15:30 indico que realice un corte de video con duración de 10 minutos
# y 20 segundos
# ffmpeg -i input.mp4 -ss 00:05:10 -to 00:15:30 -c:v copy -c:a copy output2.mp4
#
# Para quitar audio a un video hacerlo del siguiente modo:
# ffmpeg -i $input_file -c copy -an $output_file
#
# Para unir videos primero crear un archivo de texto con el nombre de los videos a unir:
# $EDITOR lista.txt
# file 1.mp4
# file 2.mp4
#
# Unir los videos:
# ffmpeg -f concat -i lista.txt -c copy output.mp4
#
# Dependencias: ffmpeg, find
#
# Autor: O. Sánchez <o-sanchez@linuxmail.org> 2023
set -eu
script="${0##*/}"
function ayuda {
printf %s "\
Modo de uso: $script [OPCIÓN] [FICHERO, /path]
Ejemplos:
$script -c /path/file START END
$script --merge /path
Selección e interpretación de opciones:
-c, --cut Crea un clip cuya duración estará basada en el punto de inicio y el punto final que
se indique del video de origen.
-m, --merge Fusiona audio y video
-h, --help Muestra esta ayuda y sale.
NOTA: Los argumentos START y END especificarlos en formato de tiempo, ejemplo: 00:10:15 (horas, minutos y segundos)
"
}
case "$1" in
--cut|-c)
ffmpeg -i "$2" -ss "$3" -to "$4" -c:v copy -c:a copy "$(date '+%y%m%d_%H%M%S').mp4"
;;
--merge|-m)
if [[ -n $(count $2/*.aac) && -n $(count $2/*.mp4) ]]; then
cd $2 || exit
mv ./*.aac input.aac && mv video*.mp4 input.mp4
#ffmpeg -i input.oga -strict experimental -acodec aac audio.aac
ffmpeg -i input.mp4 -i input.aac -c:v copy -c:a copy "$(date '+%y%m%d_%H%M%S').mp4"
mv input.* "$HOME"/.local/share/Trash/files
fi
;;
--help|-h|*)
ayuda
esac