#!/bin/sh #==================================================== # Options modifiables par l'usager. #==================================================== # Pour convertir une portion seulement, ajouter: "-ss 00:00:00 -t 00:00:30" START_TIME="00:00:00" #DURATION="00:01:00" # Taille du fichier de sortie selon le video bitrate, # pour un fichier source AVI de 345M: # # Non-spécifié: 811M # 2000k: 726M # 1400k: 594M # 1 ou 2 PASSES=1 #==================================================== # Fin des options modifiables par l'usager. #==================================================== print_usage() { echo "Usage: ${PROG_NAME} [OPTION]... FICHIER" echo "" echo "Conversion d'un fichier vidéo AVI au format MPEG-2 pour créer un DVD vidéo." echo "" echo "Options:" echo " -a Display Aspect Ratio du DVD, 4:3 (avec barres noires ajoutées) ou 16:9 (widescreen)" echo " -b video bitrate (ex: -b 1400k)" echo " -h affiche cette aide et termine" echo " -o nom du fichier de sortie" echo " -s taille du fichier source [WxH]" echo " -w grave le DVD" } #==================================================== # Options de la ligne de commande #==================================================== while getopts "a:b:ho:s:w" flag ;do case ${flag} in a) # Display Aspect Ratio of DVD, 4:3 (with blank bars added) or 16:9 (widescreen) dvd_dar=${OPTARG} ;; b) # Video bitrate video_bitrate=${OPTARG} ;; h) print_usage exit 0 ;; o) outfile=${OPTARG} ;; s) src_size=${OPTARG} ;; w) bruler="yes" ;; ?) echo "${PROG_NAME}: Option invalide: ${OPTARG}." echo "Essayez \`${PROG_NAME} -h' pour plus d'informations." exit 1 ;; esac done shift `expr "${OPTIND}" - 1` # `$#' now represents the number of arguments after the options. # `$1' is the first argument, etc. if [ $# -ne 1 ]; then echo "Erreur: fichier source non-spécifié." echo "Essayez \`${PROG_NAME} -h' pour plus d'informations." exit 1 fi INFILE="${1}" if [ -z ${outfile} ]; then outfile="$(basename ${INFILE} .avi).mpg" fi if [ -z ${DURATION} ]; then ARG_DURATION="" else ARG_DURATION="-t ${DURATION}" fi if [ "x${dvd_dar}" = "x16:9" ]; then ARG_WIDESCREEN="-w" else ARG_WIDESCREEN="" fi if [ -z ${video_bitrate} ]; then ARG_VIDEO_BIT_RATE="" else ARG_VIDEO_BIT_RATE="-b ${video_bitrate}" fi if [ -z ${src_size} ]; then echo "Erreur: taille du fichier source non-spécifiée." exit 1 fi #==================================================== # Obtention des options à utiliser avec FFMPEG #==================================================== DVD_CONVERSION_OPTIONS=$(fix-avi ${ARG_WIDESCREEN} ${src_size} ) # -y : Overwrite output files. FFMPEG_OPT="-y -ss ${START_TIME} ${ARG_DURATION} -target ntsc-dvd ${ARG_VIDEO_BIT_RATE} ${DVD_CONVERSION_OPTIONS}" if [ ! -f ${INFILE} ]; then echo "Erreur: fichier source absent." exit 1 fi if [ -f ${outfile} ]; then echo "Fichier <${outfile}> déjà convertit, terminé." else for passe in $(seq ${PASSES}); do if [ "x${PASSES}" = "x1" ]; then PASSES_OPT="" else PASSES_OPT="-pass $passe" fi echo "FFMPEG options: ${PASSES_OPT} ${FFMPEG_OPT}" ffmpeg ${PASSES_OPT} -i ${INFILE} ${FFMPEG_OPT} ${outfile} || exit 1 done fi exit $?