Mes scripts à base de ffmpeg

# définition, le rapport entre la largeur et la hauteur de l’écran, ou le nombre de colonne et de ligne de pixels.
#                    colonne*ligne 
#                    largeur*hauteur  
# 480p	DVD	 720x480 pixels	 16/9	SD, définition standard, qualité DVD
# 		
# 720p	HD Ready 1280x720 pixels 16/9   HDTV, HD 720p, 720p, HD Ready
#
# 1080p	Full HD	1920x1080 pixels 16/9	HDTV 1080p, HD 1080p, 1080p, Full HD

Limitation de l’utilisation de la cpu pour ffmpeg

cpulimit -P /usr/bin/ffmpeg -l 60

A propos de cpulimit https://www.howtoforge.com/how-to-limit-cpu-usage-of-a-process-with-cpulimit-debian-ubuntu

ça me permets d’éviter que le P.C ne se mette à trop chauffer.

converth264.sh

#!/bin/bash
#set -x
#
nom=$1
file=${nom%???}
echo "traitement du fichier" "$file"hd.mp4
# SD pour smartphone 720x480 avec profil baseline à la place de main
# HD 1280x720 -filter:v scale=w=1280:h=720 -profile:v main -pix_fmt yuv420p
#
# HD en gardant les proportions scale=w=1280:h=-1
# si erreur par exemple height not divisible by 2 (1280x719) adapter soi meme dans le cas ici mettre 720
#
# HD 1280x720 effacement des tags
time ffmpeg -hide_banner -i "$nom" -map_metadata -1 -filter:v scale=w=1280:h=720 -profile:v main -c:a aac -ar 44100 "$file"hd.mp4
#
# sans changement de taille
#time ffmpeg -hide_banner -i "$file" -map_metadata -1 -vcodec libx264 -profile:v baseline -pix_fmt yuv420p -c:a aac -ar 44100 "$file"hd.mp4
notify-send --icon=/usr/share/pixmaps/debian-logo.png ' conversion h264 terminée'
#rm "$file"
ffprobe -hide_banner "$file"hd.mp4

Avec limitation de cpu

cpulimit -P /usr/bin/ffmpeg -l 60& /usr/bin/ffmpeg -hide_banner -threads 1 -i "$nom" -map_metadata -1 -vcodec libx264 -filter:v scale=w=720:h=468 -profile:v baseline -pix_fmt yuv420p -c:a aac -ar 44100 "$file"h264.mp4

converth265.sh

#!/bin/bash
#set -x
#
#
file=$1
echo "traitement du fichier" $file
# 640x360 smartphone
# 1280x720 -filter:v scale=w=1280:h=720 -profile:v main -pix_fmt yuv420p
#time ffmpeg -hide_banner -i "$file" -map_metadata -1 -c:v libx265 -preset faster -filter:v scale=w=640:h=360 -profile:v main -pix_fmt yuv420p -c:a aac "H265_$file"
# -c:v libx265 -s 1280x720 -preset slow -profile:v main -x265-params keyint=48:min-keyint=48:scenecut=0:ref=5:bframes=3:b-adapt=2:bitrate=1000:vbv-maxrate=1100:vbv-bufsize=4000
#
# sans changement de taille
time ffmpeg -hide_banner -i "$file" -map_metadata -1 -c:v libx265 -preset faster -profile:v main -pix_fmt yuv420p -c:a aac "H265_$file".mp4
notify-send --icon=/usr/share/pixmaps/debian-logo.png ' conversion h265 terminée'
ffprobe -hide_banner "H265_$file".mp4

convert3gp.sh

#!/bin/bash
#set -x
#
#
nom=$1
file=${nom%???}
echo $file
#
time /usr/bin/ffmpeg -hide_banner -y  -i "$nom" -map_metadata -1 -acodec aac -b:a 64k -vcodec libx264 -filter:v "scale='min(852,iw)':'min(480,ih)'" -profile:v high -crf 35 "$file"3gp

Avec limitation de cpu

#!/bin/bash
#
nom=$1
file=${nom%???}
echo $file
#
cpulimit -P /usr/bin/ffmpeg -l 75&
#
/usr/bin/ffmpeg -hide_banner -y -threads 1 -i "$nom" -map_metadata -1 -acodec aac -b:a 64k -vcodec libx264 -filter:v "scale='min(852,iw)':'min(480,ih)'" -profile:v high -pix_fmt yuv420p -crf 35 "$file"3gp
#
notify-send --icon=/usr/share/pixmaps/debian-logo.png ' conversion 3gp terminée'
#
killall cpulimit

joint.sh

#!/bin/bash
# renommer les fichiers sur 4 chiffres de 0001 à 0459 avant de construire le fichier pour ffmpeg
#for f in ./*.ts; do echo "file '$f'" >> mylist.txt; done
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.ts

mylist.txt

file './0001.ts'
file './0002.ts'
file './0003.ts'
file './0004.ts'
file './0005.ts'

colle.sh

#!/bin/bash
#set -x
#
file=$1
ffmpeg -hide_banner -i "$file".m4a -i "$file".mp4 -map_metadata -1 -c copy -ss 0  "$file"-ff.mp4

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.