Clear-Host
Set-Location C:\Support\ffmpeg
# Attention. Pour les noms de fichiers qui contiennent des espaces, le script de fonctionne pas.
# en solution rapide, prévoir de renommer le fichier avant traitement.
$listeFichier = Get-ChildItem *.mp4
$compteur = 0
ForEach ($fichier in $listeFichier) {
$tl = $listeFichier.length
$compteur = $compteur + 1
$tailleListe = $listeFichier.Length
# récupération des dates des fichiers
$dateCreation = $fichier.CreationTime
$dateModif = $fichier.LastWriteTime
$dateAcces = $fichier.LastAccessTime
$taille = $fichier.Length/1024
# renommage des fichiers
$fichierNom = $fichier.BaseName
$fichierExt = $fichier.Extension
$fichierAncien = $fichier.BaseName + "-vieux" + $fichier.Extension
Rename-Item -Path $fichier -NewName $fichierAncien
$fichierNouveau = $fichier
# arguments pour le traitement vidéo
$arg = "-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=1280:720 " + $fichierNouveau
# $arg="-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=720:1280 " + $fichierNouveau
# l'option -Wait permet d'attendre la fin d'un traitement avant de lancer le suivant
Try {
$debutTraitement = Get-Date # Début de traitement
Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | En cours"
Start-Process -Wait ffmpeg.exe -ArgumentList $arg
$finTraitement = Get-Date # Fin de traitement
$duree = $fintraitement - $debuttraitement
Write-Host " Terminé. Durée de traitement :" $duree.TotalSeconds "s"
Start-Sleep -s 3
# modification des dates des nouveaux fichiers
$(Get-Item $fichier).CreationTime = $($datemodif)
$(Get-Item $fichier).LastWriteTime = $($datemodif)
$(Get-Item $fichier).LastAccessTime = $($datemodif)
}
Catch {
Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | Erreur fichier " $fichierAncien
}
}