Shell script en BASH con una lista de comandos de FFmpeg

Solapas principales

Nombre: ffmpeg.sh
 Autor: viriato
Origen: comunidad exdebian.org
Lenguaje: BASH
Licencia: GPL
Propósito: edición y conversión de videos y audios con FFmpeg
Dependencias
Fecha de creación: 02-mayo-2018

#!bin/bash
# Nombre: ffmpeg.sh
# Autor: viriato
# Origen: comunidad exdebian.org
# Lenguaje: BASH
# Licencia: GPL
# Propósito: edición y conversión de videos y audios con FFmpeg
# Dependencias: 
# Fecha de creación: 02-mayo-2018

clear
function menu {
	echo
	echo 'SCRIPT CON UNA LISTA DE COMANDOS FFMPEG'
	echo
        echo '____________________MENU__________________________'
	echo 
	echo 'Lista de opciones:'
	echo
	echo '1)  Convertir un video a otro video en cuaquier formato'  
	echo '2)  Convertir un video en otro video con formato FLV seleccionando el bitrate' 
	echo '3)  Convertir un video en otro video con formato THEORA VORBIS' 	
	echo '4)  Convertir un video con H.264 sin pérdida de calidad' 
	echo '5)  Convertir un video con VP9 en un video WEBM sin pérdida de calidad' 
	echo '6)  Convertir un video con MPEG-4 en un video AVI' 
	echo '7)  Convertir un archivo de audio WAV en un archivo de audio MP3 con máxima calidad' 
	echo '8)  Convertir un archivo de audio AAC (WAV) en un archivo de audio m4a' 
	echo '9)  Convertir un video con formato AVI en un video con formato DV' 
	echo '10) Convertir un video con formato AVI en un video con formato MPEG para ver en un reproductor DVD' 
        echo '11) Bajar o subir el volumen de audio a un video' 
	echo '12) Comprimir un video en formato mp4 con 2 pasadas' 
	echo '13) Convertir video MP4 en otro video WMV' 
	echo '14) Cambiar el formato de un video de 4:3 a 16:9' 
	echo '15) Cambiar las dimensiones de un video' 
	echo '16) Convertir un video en una secuencia de imágenes' 
	echo '17) Convertir una secuencia de imágenes  alojadas en una carpeta en un video .AVI' 	
	echo '18) Convertir un video en un GIF animado' 
	echo '19) Recortar un video con el parámetro crop' 
	echo '20) Añadir sonido a un video' 
	echo '21) Quitar sonido a un video' 
	echo '22) Cortar fragmento de video'
	echo '23) Convertir disco BLUE-RAY 4K a un video en formato MKV 1080px264'
	echo '24) Extraer sonido de un video y guardarlo en un archivo .MP3' 
	echo '25) Compresión de archivos de MP3' 
	echo '26) Añadir una marca de agua a un video sin sonido usando una imagen .PNG' 
	echo '27) Añadir texto que se desplaza de derecha a izquierda' 
	echo '28) Añadir cronómetro a un video' 
	echo '29) Modificar la velocidad de un video y su audio' 
	echo '30) Convertir un fotograma de un video en una imagen con extensión JPG, PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF o SGI' 
	echo '31) Unir varios videos con el mismo formato' 
	echo '32) Salir del script'
	echo
	echo '__________________________________________________'
}

function write_option {
	echo
	echo 'Escribe una opción de 1 a 32:'
	read write_option
}

#  1) Convertir un video en otro video con cuaquier formato 
function option_01 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO CON UN FORMATO EN OTRO FORMATO:'
	echo
	echo 'Introduce el nombre de video de entrada:' 
	read video_input
	echo 
	echo 'Introduce el nombre de video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input $video_output
}

#  2) Convertir un video en otro video con formato FLV seleccionando el bitrate
function option_02 { 
	clear
	echo
	echo 'CONVERTIR UN VIDEO EN OTRO VIDEO EN FORMATO FLV SELECCIONANDO EL BITRATE:'
	echo
	echo 'Introduce el nombre de video de entrada:' 
	read video_input
	echo 
	echo 'Introduce el bitrate para el video de salida (Por ejemplo: 1000k):'
	read bitrate
	echo
	echo 'Introduce el nombre de video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -ar 44100 -b $bitrate $video_output
}

# 3) Convertir un video en otro video con formato THEORA VORBIS:
function option_03 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO EN OTRO VIDEO CON THEORA VORIS:'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo
	echo 'Introduce el valor de la calidad de video de 0 a 10:'
	read video_value
	echo
	echo 'Introduce el valor de la calidad de audio de 0 a 10:'
	read audio_value
	echo
	echo 'Introduce el nombre de video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -codec:v libtheora -qscale:v $video_value -codec:a libvorbis -qscale:a $audio_value $video_output
}

# 4) Convertir un video con H.264 sin pérdida de calidad: 
function option_04 { 
	clear
	echo
	echo 'CONVERTIR UN VIDEO CON H.264 sin pérdida de calidad:'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo 
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -c: v libx264 -preset veryslow -crf 0 $video_output
}

# 5) Convertir un video con VP9 en un video WEBM sin pérdida de calidad:
function option_05 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO CON VP9 EN OTRO VIDEO CON FORMATO WEBM'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo 
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -c:v libvpx-vp9 -lossless 1 $video_output
}

# 6) Convertir un video con MPEG-4 en un video AVI:
function option_06 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO CON MPEG-4 EN UN VIDEO AVI'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo 
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
        ffmpeg -i $video_input -c:v libx264 -crf 0 -preset veryslow -c:a aac -b:a 192k -ac 2 $video_output
}

# 7) Convertir un archivo de audio WAV en un archivo de audio MP3 con máxima calidad
function option_07 {
	clear
	echo
	echo 'CONVERTIR UN ARCHIVO DE AUDIO WAV EN UN ARCHIVO DE AUDIO MP3 con máxima calidad'
	echo
	echo 'Introduce el archivo de audio WAV de entrada:'
	read audio_input
	echo
	echo 'Introduce el archivo de audio MP3 de salida:'
	read audio_output
	echo
	ffmpeg -i $audio_input -codec:a libmp3lame -b:a 320k $audio_output 
}

# 8) Convertir un archivo de audio AAC (WAV) en un archivo de audio m4a
function option_08 {
	clear
	echo
	echo 'CONVERTIR UN ARCHIVO DE AUDIO AAC (WAV) en un archivo de audio m4a'
	echo
	echo 'Introduce el archivo de audio AAC (WAV) de entrada:'
	read audio_input
	echo
	echo 'Introduce el archivo de audio m4a de salida:'
	read audio_output
	echo
	ffmpeg -i $audio_input -c:a libfdk_aac -vbr 5 $audio_output
}

# 9) Convertir un video con formato AVI en un video con formato DV
function option_09 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO CON FORMATO AVI EN UN VIDEO CON FORMATO DV:'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo 
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 $video_output
}

# 10) Convertir un video con formato AVI en un video con formato MPEG para ver en un reproductor DVD 
function option_10 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO EN FORMATO AVI EN UN VIDEO CON FORMATO MPEG PARA VER EN UN REPRODUCTOR DVD:'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo 
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -target pal-dvd -ps 2000000000 -aspect 16:9 $video_output
}

# 11) Bajar o subir el volumen de audio a un video
function option_11 {
   clear
   echo
   echo 'BAJAR O SUBIR EL VOLUMEN DE AUDIO A UN VIDEO'
   echo
   echo 'Introduce el nombre del video de entrada:'
   read video_input
   echo
   echo 'Ejemplo: si el valor de volumen de audio de un video elegido es 2, el audio modificado se escuchará con el doble de potencia: si el valor es 0.5 con la mitad de potencia'
   echo 'Introduce el valor de volumen a un video'
   read volume_value
   echo
   echo 'Introduce el nombre del video de salida:'
   read video_output
   echo
   ffmpeg -i $video_input -af "volume=$volume_value" $video_output

}
 
# 12) Comprimir un video en formato mp4 con 2 pasadas
function option_12 {
	clear
	echo
	echo 'COMPRIMIR UN VIDEO'
	echo
	echo 'Íntroduce el nombre del video de entrada:'
	read  video_input
	echo
	echo 'Parametros de velocidad de compresión: ultrafast,superfast,veryfast,faster,fast,medium,default preset,slow,slower,veryslow'
	echo 'Parámetro recomendado: medium'
	echo 'Introduzca el parámetro de compresión de video:'
	read  compression_speed_parameter
	echo
	echo 'Valor recomendado 80k, esto reduce el tamaño del archivo a la mitad con buena calidad'
	echo 'Introduce el valor de compresión de video:'
	read  video_compression_value
	echo
	echo 'Íntroduce el nombre del video de salida:'
	read  video_output
	echo
	ffmpeg -y -i $video_input -c:v libx264 -preset $compression_speed_parameter -b:v $video_compression_value -pass 1 -c:a libfdk_aac -b:a 128k -f mp4 /dev/null && \
	ffmpeg -i $video_output -c:v libx264 -preset $compression_speed_parameter -b:v $video_compression_value -pass 2 -c:a libfdk_aac -b:a 128k $video_output
}

# 13) Convertir video MP4 en otro video WMV
function option_13 {
	clear
	echo
	echo 'CONVERTIR VIDEO MP4 EN OTRO VIDEO WMV'
	echo
	echo 'Íntroduce el nombre del video de entrada'
	read video_input
	echo
	echo 'Introduce el valor de compresión de video:'
	read compression_video_value
	echo
	echo 'Introduce el nombre  del video de salida:'
	read video_output
	echo
        ffmpeg -i $video_input -c:v wmv2 -b:v $compression_video_value -c:a wmav2 -b:a 192k $video_output

}

# 14) Cambiar el formato de un video cualquiera de 4:3 a 16:9
function option_14 {
	clear
	echo
	echo 'CAMBIAR EL FORMATO DE UN VIDEO 4:3 A 16:9'
	echo
	echo 'Íntroduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el nombre  del video de salida:'
	read video_output
	echo
        ffmpeg -i $video_input -aspect 16:9 $video_output
	}

# 15) Cambiar las dimensiones de un video
function option_15 {
	clear
	echo
	echo 'CAMBIAR LAS DIMENSIONES DE UN VIDEO'
	echo
	echo 'Íntroduce el nombre del video de entrada:'
	read  video_input
	echo
        echo 'Introduce el ancho del video'
        read  width_value
        echo
	echo 'Introduce el alto del video'
	read  height_value
	echo
	echo 'Íntroduce el nombre del video de  salida:'
	read  video_output
	echo
	ffmpeg -i $video_input -filter:v scale=$width_value:$height_value -c:a copy $video_output
}

# 16 Convertir un video en una secuencia de imágenes
function option_16 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO EN UNA SECUENCIA DE IMÁGENES'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	read
	echo 'Introduce el nombre de la extensión de las imágenes jpg, pgm, ppm ,pam, pgmyuv, jpeg, gif, png, tiff o sgi:'
	read ext_image
	echo
	ffmpeg -i $video_input image%d.$ext_image
}

# 17 Convertir una secuencia de imágenes alojadas en una carpeta en un video .AVI
function option_17 {
	clear
	echo
	echo 'CONVERTIR UNA SECUENCIA DE IMÁGENES EN UNA CARPETA EN UN VIDEO AVI'
	echo
        echo 'Introduce el tiempo de duración de cada imagen. Si el tiempo de imagen es 0.2 la duración de cada imagen es de 5 segundos';
	read time_image
	echo
	echo 'Ejemplo, una secuencia de imaágenes foto0001,foto0002,foto0003....se escribiria asi: foto%04d'
	echo 'Introduzca el nombre de la secuencia de imágenes:'
	read images_sequence
	echo
        echo 'Introduce el nombre de la extensión de las imágenes jpg, pgm, ppm ,pam, pgmyuv, jpeg, gif, png, tiff o sgi:'
	read ext_image
        echo
	echo
	echo 'Introduce el nombre de video de salida:'
	read video_output
	echo
	ffmpeg -f image2 -r $time_image -i $images_sequence.$ext_image -r 25 $video_output
}

# 18 Convertir un video en un GIF animado
function option_18 {
	clear
	echo
	echo 'CONVERTIR UN VIDEO EN UN GIF ANIMADO'
	echo
	echo 'Introduce el nombre del video de entrada'
	read video_input
	echo
	echo 'Introduce el nombre del GIF ANIMADO de salida'
	read gif_output
	echo
	echo 'Recomendación: Abrir el archivo .gif con el navegador Firefox'
	echo
	ffmpeg -i $video_input -pix_fmt rgb24 $gif_output.gif
}

# 19 Recortar un video con el parámetro crop
function option_19 {
	clear
	echo
	echo 'RECORTAR UN VIDEO CON UN PARÁMETRO CROP'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el valor del ancho (weight) del rectángulo del video original que desea recortar:'
	read  w
	echo
	echo 'Introduce el valor de la altura (height) del video original que desea recortar:'
	read  h
	echo
	echo 'Introduce el valor de la coordenada x del rectángulo del video original que desea recortar:'
	read  x
	echo
	echo 'Introduce el valor de la coordenada y del rectángulo del video original que desea recortar:'
	read  y
	echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
        ffmpeg -i $video_input -filter:v "crop=$w:$h:$x:$y" $video_output
}

# 20 Añadir sonido a un video
function option_20 {
	clear
	echo
	echo 'AÑADIR UN ARCHIVO DE AUDIO A UN VIDEO'
	echo
	echo 'Introduce el nombre del archivo de audio:'
	read audio_input
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $audio_input -i $video_input $video_output
}

# 21 Quitar el sonido a un video
function option_21 {
	clear
	echo
	echo 'QUITAR UN ARCHIVO DE AUDIO A UN VIDEO'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -an $video_output
}

# 22 Cortar un fragmento de video
function option_22 {
	clear
	echo
	echo 'CORTAR UN FRAGMENTO DE VIDEO'
	echo
	echo 'Introduce el inicio en formato hh:mm:ss:'
	read init_time
	echo 
	echo 'Introduce la duracion del video en segundos:'
	read end_time
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -ss $init_time -t $end_time -i $video_input $video_output
}

# Convertir disco BLUE-RAY 4K a un video en formato MKV 1080px264
function option_23 {
	clear
	echo
	echo 'CONVERTIR DISCO BLUE-RAY 4K A UN VIDEO EN FORMATO MKV 1080px264'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read  video_input
	echo
	echo 'Introduce el nombre del video de salida:'
	read  video_output
	ffmpeg -y -i $video_input.m2ts -c:v libx264 -pix_fmt yuv420p -preset slow -crf 18 -x264-params me=umh:merange=24:trellis=1:level=4.1:ref=5 -filter:v "crop=3840:1600:0:280, scale=1920:800" -an "1080_"$video_output.mkv
}


# 24 Extraer sonido de un video y guardarlo en un archivo .MP3
function option_24 {
	clear
	echo
	echo 'EXTRAER SONIDO DE UN VIDEO Y GUARDARLO EN UN ARCHIVO .MP3'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read  video_input
	echo
	echo 'Introduce el valor del bitrate de audio (P.e: 320):'
	read  ab_value
	echo
	echo 'Introduce el nombre del audio de salida:'
	read  audio_output
	echo
	ffmpeg -i $video_input -vn -ar 44100 -ac 2 -ab $ab_value -f mp3 $audio_output.mp3
}

# 25) Compresión de archivos de MP3
# -acodec es el codec de audio utilizado.
# -ab es el bitrate de audio en el cual comprimimos nuestro archivo.mp3 para dar salida a un archivo en .mp3 comprimido.
function option_25 {
	clear
	echo 
	echo 'COMPRESIÓN DE UN ARCHIVO DE AUDIO .MP3'
	echo
	echo 'Introduce el nombre del archivo de audio MP3 de entrada:'
	read  audio_input
	echo
	echo 'Introduce el valor del bitrate de audio de compresión (Por ejemplo 8k) :'
	read  ab_compression
	echo
	echo 'Introduce el nombre del archivo de audio MP3 de salida:'
	read  audio_output
	echo
	ffmpeg -i $audio_input.mp3 -acodec libmp3lame -ab $ab_compression $audio_output.mp3
}

# 26) Añadir una marca de agua a un video sin sonido usando una imagen .PNG
function option_26 {
	clear
	echo
	echo 'AÑADIR UNA MARCA DE AGUA A UN VIDEO SIN SONIDO USANDO UNA IMAGEN .PNG'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el nombre de la imagen PNG con la marca de agua:'
	read water_mark
        echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -i $water_mark -filter_complex "overlay=10:10" $video_output
}

# 27 Añadir texto que se desplaza de derecha a izquierda
function option_27 {
	clear
	echo
	echo 'AÑADIR TEXTO QUE SE DESPLAZA DE IZQUIERDA A DERECHA'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce el texto:'
	read text
        echo
	echo 'Introduce el nombre del video de salida:'
	read video_output		
	echo
	ffmpeg -i $video_input -vf "drawtext=text='$text':fontfile=bpmono.ttf:y=h-line_h-10:x=w-mod(max(t-0.5\,0)*(w+tw)/10\,(w+tw)):fontcolor=ffcc00:fontsize=40:shadowx=2:shadowy=2" $video_output
}

# 28 Añadir cronómetro a un video
function option_28 {
	clear
	echo
	echo 'AÑADIR CRONÓMETRO A UN VIDEO'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'El tiempo del cronometro apareceóó en horas,minutos,segundos y centésimas de segundo con el siguiente formato 00:00:00:00' 
	echo
	echo 'Introduce la hora del tiempo de inicio del cronometro'
	read hours
	echo
	echo 'Introduce los minutos del tiempo de inicio del cronometro'
	read minutes
	echo
	echo 'Introduce los segundos del tiempo de inicio del cronometro'
	read seconds
	echo
	echo 'Introduce las centesimas de segundo del tiempo de inicio del cronometro'
	read hundredths
	echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='$hours\:$minutes\:$seconds\:$hundredths': r=25: \
	x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y $video_output
}

# 29 Modificar la velocidad de un video y su audio
function option_29 {
	clear
	echo 'Si la velocidad del video y del audio es mayor que 1, el resultado sera un video y audio a camara rapida'
	echo 'Si la velocidad del video y del audio es menor que 1, el resultado sera un video y audio a camara rapida'
	echo
	echo 'Introduce el nombre del video de entrada:'
	read video_input
	echo
	echo 'Introduce la velocidad de un video:'
	read video_speed
        echo
	echo 'Introduce la velocidad del audio de un video:'
	read audio_speed
	echo
	echo 'Introduce el nombre del video de salida:'
	read video_output
	echo
	ffmpeg -i $video_input -filter_complex "setpts=PTS/$video_speed;atempo=$audio_speed" $video_output
}

# 30 Convertir un fotograma de un video en una imagen con extensión JPG, PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF o SGI
function option_30 {
        clear
	echo
	echo 'CONVERTIR UN FOTOGRAMA DE UN VIDEO EN UNA IMAGEN CON EXTENSION JPG, PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF o SGI:'
	echo
	echo 'Introduce el nombre de video de entrada:'
	read video_input
	echo 
	echo 'Introduce el nombre del fotograma de salida:'
	read image_output
	echo
	echo 'Introduce el vcodec del fotograma jpg, pgm, ppm ,pam, pgmyuv, jpeg, gif, png, tiff o sgi:'
	read vcodec_image
	echo
	echo 'Introduce la posición temporal del fotograma de salida en el video. Por ejemplo, la posición de un fotograma ubicado el segundo 4 sería 00:00:04:'
	read image_time
	ffmpeg -i $video_input -vcodec $vcodec_image -vframes 1 -ss $image_time -an -f rawvideo $image_output
}

# 31) Unir varios videos con el mismo formato
function option_31 {
        clear
	echo
	echo 'UNIR VARIOS VIDEOS CON EL MISMO FORMATO'
	echo
	echo  "Ejemplo de lista de videos de entrada-> 01.avi|02.avi|03.avi"
	echo
	echo 'Introduce los nombres de video de entrada:'
	echo
	read videos_input_list
	echo 
	echo 'Introduce el nombre del video de salida:'
	echo
	read video_output
	echo
	ffmpeg -i "concat:$videos_input_list" -c copy $video_output
}

# 32) Salir del script
function option_32 {
	echo 'Salir del script'
}
	
write_option=0
go_out=32

while [ $write_option -ne $go_out ]; 
do   
   clear
   menu
   write_option
      
   if [ $write_option -ge 1 ] && [ $write_option -le 32 ]; 
   then  
      clear
      case $write_option in   # Acciones para las diferentes opciones del menu
         1)
         option_01
         ;;       
         2)
	 option_02
         ;;
         3)
	 option_03
         ;;
         4)
         option_04
         ;;
         5)
         option_05
         ;;
         6)
         option_06
	 ;;
	 7)
         option_07
	 ;;
	 8)
	 option_08
	 ;;
	 9)
	 option_09
	 ;;
	 10)
	 option_10
	 ;;
	 11)
         option_11
         ;;
	 12)
	 option_12
	 ;;
	 13)
	 option_13
	 ;;
	 14)
	 option_14
	 ;;
	 15)
	 option_15
	 ;;
	 16)
	 option_16
	 ;;
	 17)
	 option_17
         ;;
	 18)
	 option_18
         ;;
	 19)
	 option_19
	 ;;
	 20)
	 option_20
	 ;;
	 21)
	 option_21
	 ;;
	 22)
	 option_22
	 ;;
	 23)
	 option_23
	 ;;
	 24)
	 option_24
	 ;;
	 25)
	 option_25
	 ;;
	 26)
	 option_26
	 ;;
	 27)
	 option_27
	 ;;
         28)
         option_28
	 ;;
	 29)
	 option_29
	 ;;
	 30)
	 option_30
	 ;;
	 31)
	 option_31
	 ;;
	 32)
	 option_32
	 ;;
      esac
   else
      echo '¡No ha introducido una opcion correcta!'
   fi
   echo
   echo 'Pulse una tecla...'
   read
done

Uso:

1) Copia el script en la siguiente ruta /usr/local/bin/ffmpeg.sh para poder ejecutarlo desde cualquier directorio

2) Concede permisos de ejecución en modo root:

# chmod + x ffmpeg.sh

3) Ejecuta el script en modo usuario:

$ bash ffmpeg.sh

Propósito:

FFmpeg es una colección de software libre que puede grabar, convertir (transcodificar) y hacer streaming de audio y vídeo. Incluye libavcodec, una biblioteca de códecs. FFmpeg está desarrollado en GNU/Linux, pero puede ser compilado en la mayoría de los sistemas operativos, incluyendo Windows. El proyecto comenzó por Gerard Lantau, un seudónimo de Fabrice Bellard, y ahora es mantenido por Michael Niedermayer. Es destacable que la mayoría de los desarrolladores de FFmpeg lo sean también del proyecto MPlayer (más un miembro del proyecto Xine), y que FFmpeg esté hospedado en el servidor del proyecto MPlayer.

FFmpeg está liberado bajo una licencia GNU Lesser General Public License 2.1+ o GNU General Public License 2+ (dependiendo de qué bibliotecas estén incluidas).2​ Los desarrolladores recomiendan utilizar el último snapshot de Subversion ya que mantienen constantemente una versión estable.

FFmpeg es un programa bastante sencillo y muy fácil de usar, orientado tanto a personas con conocimientos avanzados como usuarios novatos. Es capaz de elegir el códec con sólo escribir la extensión. Por ejemplo, FFmpeg usará x264 si elegimos .mp4, mpeg4 si usamos .avi, VP8 si usamos .webm, etc...