Achivid sirve para disminuir el tamaño de archivos .mp4.

Este programa usa flags de ffmpeg para reducir sus dimensiones (por defecto un %50 más pequeño, se puede cambiar con -t xx:yy, es decir, largo por alto separado por dos puntos).
También setea (arbitrariamente hasta ahora) el valor de setsar a 1:1.
El archivo debe ubicarse en la ruta en que se ejecute el programa, esto para la gestión de archivos temporales.

Una vez finalizado el proceso de ffmpeg se puede escoger si conservar el archivo original o no.
Para instalar, copiar código en archivo achivid en /usr/bin.


Modo de uso:
$ achivid -f archivo.mp4

Código:

#!/bin/sh
printf ":: 6f-achivid :: \n\n"
while getopts ":f:t" opt; do
    case $opt in
	f) f="$OPTARG";; # fichero
        t) t="$OPTARG";; # tamaño
    esac
done

# confirma que se señala fichero a editar
if [ -z "$f" ]; then
    printf "Indica el fichero que quieres editar\n\n  achivid -f test.mp4 [-t xxx:yyy]\n\n"
    exit
fi
archivo=$f

# confirma que archivo es de video

# confirma que fichero está en directorio
sl='\/'
a0=$(echo "$archivo" | sed s/"$sl"/\n/)
a1=$(printf "%s\n" "$a0" | sed -n 1p)
printf "$archivo" > tmpachivid_loc0
printf "$a1" > tmpachivid_loc1
a4=$(diff tmpachivid_loc0 tmpachivid_loc1 )
rm tmpachivid_loc*
if [ ! -z "$a4"  ]; then
    echo 'Debes estar en el directorio en que está el archivo que quieres manipular'
    exit
fi

# determina tamaño de salida
if [ ! -z "$t" ]; then               # usuario señala tamaño
    # verifica formato de tamaño
    # define
    scale=$t
else                                 # usuario NO señala tamaño
    res=$(ffprobe -v error -select_streams v:0 \
          -show_entries stream=width,height -of csv=s=x:p=0 \
	  "$archivo" | sed s/x/\n/)

    rX=$(printf "%s\n" "$res" | sed -n 1p)
    rY=$(printf "%s\n" "$res" | sed -n 2p)
    
    eX=$(expr "$rX" % 2)
    eY=$(expr "$rY" % 2)
    
    if [ "$eX" -ne 0 ]; then
	rX=$(expr "$rX" + 1)
    fi
    
    if [ "$eY" -ne 0 ]; then
	rY=$(expr "$rY" + 1)
    fi
    
    scale="$rX":"$rY"

    done=1
    # EJECUTA EDICIÓN

fi


if [ "$done" -eq 1 ]; then
    printf "ffmpeg init\n"
    ffmpeg -loglevel quiet -stats -i "$archivo" -vf scale="$scale",setsar=1:1 ch_"$archivo"

    printf "mantener archivo?\n 1-si \n otro-no \n"
    antes=$(ls -lh "$archivo")

    read mantener
    if [ "$mantener" -eq 1 ]; then
	printf "manteniendo archivo: original_$archivo \n"
	mv "$archivo" original_"$archivo"
    else
	printf "eliminando archivo original \n"
	rm "$archivo"
    fi
    printf "renombrando archivo temporal\n\n"
    mv ch_"$archivo" "$archivo"
    printf "resultados:\n"
    echo "$antes"
    ls -lh "$archivo"
fi