Script bash, transformer *.m2ts *.ts *.mts… en *. …

Voila mon dernier script, celui-ci me permet notamment d’encoder les enregistrements de ma freebox, ci-dessous la liste des fonctions. En fin d’article vous trouverez le script à télécharger.

  • Encodage des vidéos .m2ts .avi .ts .mts .mpg .flv
  • Tous les encodages se font au format .mkv
  • Choix de résolution 720p ou sans changement
  • Choix kbit/s de la video (x264)
  • Choix kbit/s du son (mp3)
  • Choix du preset et tune du codec x264
  • Désentrelacer ou non la video
  • Calculer le bitrate en fonction de la taille voulu

Paquets prérequis :

  • ffmpeg
  • libmatroska
  • libx264
  • lame

Exécuter le script dans le répertoire contenant les vidéos.
#!/bin/sh
#mkv Encod. Script
#https://lepouf.info
#licence : GPLv2

clear
echo 
echo "##################### mkv Encod. Script #####################"
echo 
echo "  1  --> Encoder une video"
echo "  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "  2  --> Calculer de bitrate (x264)"
echo "  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo 
echo "### Pour retrouver la liste des commades tapez h ou help ####"
echo 

while [ 1 ]; do               						
echo -n "-> "                    					
read reps

case $reps in
  help | h )
	clear
	echo 
	echo "####################### Encod. Script #######################"
	echo 
	echo "  1  --> Encoder une video"
	echo "  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
	echo "  2  --> Calculer de bitrate (x264)"
	echo "  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
	echo 
	echo "### Pour retrouver la liste des commades tapez h ou help ####"
	echo ;;

  1 )
	clear
	echo

	#Resolution
	echo "****************************************************************"
	echo -n "Changer la Resolution pour une 720p o/n : "
	echo
		read on
	if [ "$on" = "o" ]; then
    		echo "La video sera en 720p"
    		res="-s 1280x720"
	elif [ "$on" = "n" ]; then
    		echo "Pas de changement de resolution"
	else
    		echo "Il faut taper o ou n! Pas $on"
	fi
	echo

	#Désentrelacer
	echo "****************************************************************"
	echo -n "Désentrelacer la video o/n : "
	echo
		read on
	if [ "$on" = "o" ]; then
    		echo "La video sera désentrelacer"
    		des="-deinterlace"
	elif [ "$on" = "n" ]; then
    		echo "La video ne sera pas désentrelacer"
	else
    		echo "Il faut taper o ou n! Pas $on"
	fi
	echo

	#preset
	echo "****************************************************************"
	echo -n "Choisir le preset parmi la liste ci-dessou : "
	echo
	echo "---------------------------------------------------> Lenteur"
	echo "veryfast - faster - fast-  medium - slow - slower - veryslow"
	echo "---------------------------> Meilleur qualite et compression"
	echo -n "-> "    
		read preset
	echo
	
	#tune
	echo "****************************************************************"
	echo -n "Choisir le tune parmi la liste ci-dessou : "
	echo
	echo "film - animation - grain - fastdecode - zerolatency"
	echo -n "-> "    
		read tune
	echo	

	#Kbit/s de la video et du son
	echo "****************************************************************"
	echo -n "VIDEO (x264) - nombre kbit/s noter ainsi -> xxxxk : " 
		read vkb
	echo

	echo "****************************************************************"
	echo
	echo -n "SON (mp3) - nombre kbit/s noter ainsi -> xxxk : " 
		read skb
	echo

	#Remplace les espaces par des underscores des videos du repertoire courant
	for video in *.m2ts *.avi *.ts *.mts *.mpg *.flv;
		do rename 's/ /_/g' *; 
	done	

	#Encode les videos du repertoire courant
	for video in *.m2ts *.avi *.ts *.mts *.mpg *.flv;
		do ffmpeg -y -i $video -threads 0 -vcodec libx264 -preset $preset -tune $tune -b:v $vkb -acodec libmp3lame -ac 2 -ab $skb $des $res -sn -f matroska `basename $video`.mkv; 
	done

	echo
	echo "Well Done"
	echo	
	echo ;;

  2 )
	clear
	echo
	echo -n "Taille total de la video : " 
		read taille
	echo -n "Duree de la video noter ainsi -> H M S : "
		read h m s
		temps=$(($s+$m*60+$h*3600))
	echo -n "Bitrate du son : "
		read son

	#Calcul du bitrate
	bitrate=$(((($taille*8192)/$temps)-$son)) 
	echo	
	echo "Le bitrate la video doit etre de $bitrate kbit/s"
	echo	
	echo ;;

esac
done
exit 0
lepouf.encodage.video.sh
lepouf.encodage.video.sh.7z
1.2 KiB
30 Téléchargements
Détails

4 Commentaires

  1. Mouais le calcul du bitrate est flou … Le son doit être entré comment ? La taille de la piste ? donc bitrate ? et si on est multi piste ?

    Trop brouillon, tout est à retravailler.

      Répondre

  2. Jocker Papi
    314 messages

    Certe c’est flou, mais je ne cherchai pas la precision ;)

    Si tu as mieux sous la main, partage :D

      Répondre

  3. Je bosse sur quelque chose, je te le proposerais ça ! Je cherche à calculer le bitrate précisément et ce en tenant compte de la résolution et non sur un bitrate qui peut ne pas être adapté à la résolution (si on ne veut pas la passer en 720p mais garder du 1080p voire penser au 4K). Je te tiens au jus dès que j’ai un truc qui tient la route ^^

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera jamais publiée, ou utilisée à des fins commerciales. Les champs obligatoires sont indiqués avec des *.

Vous pouvez utiliser les balises de mise en forme